This plugin will assist you in triggering pipelines by watching folders in your monorepo
.
steps:
- label: "Triggering pipelines"
plugins:
chronotc/monorepo-diff:
diff: "git diff --name-only HEAD~1"
watch:
- path: "foo-service/"
config:
trigger: "deploy-foo-service"
steps:
- label: "Triggering pipelines"
plugins:
chronotc/monorepo-diff:
diff: "git diff --name-only $(head -n 1 last_successful_build)"
watch:
- path: "foo-service/"
config:
trigger: "deploy-foo-service"
build:
message: "Deploying foo service"
env:
- HELLO=123
- AWS_REGION
- path: "ops/terraform/"
config:
trigger: "provision-terraform-resources"
async: true
wait: true
hooks:
- command: "echo "$(git rev-parse HEAD)" > last_successful_build"
This will run the script provided to determine the folder changes. Depending on your use case, you may want to determine the point where the branch occurs https://stackoverflow.com/questions/1527234/finding-a-branch-point-with-git and perform a diff against the branch point.
README.md
lib/trigger.bash
tests/trigger.bats
Default: git diff --name-only HEAD~1
diff: ./diff-against-last-successful-build.sh
#!/bin/bash
set -ueo pipefail
LAST_SUCCESSFUL_BUILD_COMMIT="$(aws s3 cp "${S3_LAST_SUCCESSFUL_BUILD_COMMIT_PATH}" - | head -n 1)"
git diff --name-only "$LAST_SUCCESSFUL_BUILD_COMMIT"
diff: ./diff-against-last-built-tag.sh
#!/bin/bash
set -ueo pipefail
LATEST_BUILT_TAG=$(git describe --tags --match foo-service-* --abbrev=0)
git diff --name-only "$LATEST_TAG"
Declare a list of
- path: app/cms/
config: # Required [trigger step configuration]
trigger: cms-deploy # Required [trigger pipeline slug]
If the path
specified here in the appears in the diff
output, a trigger
step will be added to the dynamically generated pipeline.yml
The configuration for the trigger
step https://buildkite.com/docs/pipelines/trigger-step
By default, it will pass the following values to the build
attributes unless an alternative values are provided
- path: app/cms/
config:
trigger: cms-deploy
build:
commit: $BUILDKITE_COMMIT
branch: $BUILDKITE_BRANCH
By setting wait
to true
, the build will wait until the triggered pipeline builds are successful before proceeding
Currently supports a list of commands
you wish to execute after the watched
pipelines have been triggered
hooks:
- command: upload unit tests reports
- command: echo success
By turning DEBUG
on, the generated pipeline will be displayed prior to upload
steps:
- label: "Triggering pipelines"
env:
DEBUG: true
plugins:
chronotc/monorepo-diff:
diff: "git diff --name-only HEAD~1"
watch:
- path: "foo-service/"
config:
trigger: "deploy-foo-service"
https://stackoverflow.com/questions/1527234/finding-a-branch-point-with-git
Ensure that all tests are in the ./tests
docker-compose run --rm tests