I want to trigger another pipeline at the end of the main CI build. However, I want to trigger it to only run or skip based on the previous step build status?
Hey @Joe looks like you need something like this: buildkite-agent step v3 | Buildkite Documentation
If you combine that with a dynamic pipeline upload and possibly with Managing step dependencies | Buildkite Documentation you should have everything you need to achieve such a pipeline structure.
The skip below the trigger command, how to make it conditional?
#!/bin/bash
set -euo pipefail
result="$(buildkite-agent step get outcome --step filter1)"
buildkite-agent pipeline upload <<YAML
steps:
- label: "The pr pipeline"
trigger: "pr-pipeline"
skip: if [ $(buildkite-agent step get "outcome" --step "filter2") == "soft_failed" ]; then
"skip"
fi
build:
env:
RESULT: "${result}"
YAML
Good question.
It depends if you still want it in the pipeline but marked as skipped. Otherwise you could just not upload it. The skip
attribute only takes a boolean, and it can’t be evaluated like you’re example above.
I would do something like this and avoid the skip
attribute entirely:
if [ $(buildkite-agent step get "outcome" --step "one") == "soft_failed" ]; then
buildkite-agent pipeline upload ...
fi
This would only upload the step if you want to run it, and not upload it if you don’t. Otherwise, you could do something similar to set the skip
attribute true/false.