Is it possible to programmatically abort a build, to have it just stop running, without that counting as a failure? Currently, I have a script that runs as the first step in my Workflow, and it checks the commit message to see if it should run the build. All I can do is return 0 or 1 from the script. I want to be able to programmatically abort the build instead.
Thanks for asking this here!
In general we consider aborted builds as failures, because otherwise it could be misleading / you might miss an important issue.
That said it’s possible to do what you described, but requires a bit of configuration. The trick is to expose an env var in case you want to skip all other steps and then mark every step which should be skipped in that case with a
run_if testing against the presence of that environment variable and skipping if present.
- Exposing an environment variable from a step, e.g. from a Script step, using
run_ifto dynamically run/skip steps: http://devcenter.bitrise.io/tips-and-tricks/disable-a-step-by-condition/
A short example with only three Script steps, where the first one exposes a “skip” marker env var, and the second and third ones are configured to be skipped if that marker env var is present (with two different
run_if statements, choose the one you like the most ;)):
format_version: "3" default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git workflows: primary: steps: - email@example.com: title: Expose env var inputs: - content: |- #!/bin/bash set -ex envman add --key SKIP_OTHER_STEPS --value "skip" - firstname.lastname@example.org: title: This step will be skipped run_if: enveq "SKIP_OTHER_STEPS" "skip" | not - email@example.com: title: This step will also be skipped run_if: enveq "SKIP_OTHER_STEPS" ""
If you have any questions just let us know!