Add an option to block on manual jobs only if they're run
Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.
Problem to solve
Suppose I have a manual job that runs additional long-running tests. This manual job isn't always run, and that's okay. Merge requests should still show a passed pipeline, and "merge when pipeline succeeds" should work. However, if the job was run and failed, I'd like the MR to show a failed pipeline. Additionally, if the job was started and is currently running, I'd like "merge when pipeline succeeds" to block.
Proposal
I'm proposing a false-if-run option for allow_failure on manual jobs.
| allow_failure | true | false | false-if-run |
|---|---|---|---|
| Failed job pipeline status in MRs | CI build passed with warnings | fail | fail |
| Blocks subsequent stages | no | yes | yes* |
| Merge when pipeline succeeds | ignores job | blocks until run & pass | blocks if running/failed |
Note: The only way this makes sense for subsequent stages is if the behavior gets inherited by them. If you choose not to run a manual job and that blocks a stage, the purpose of false-if-run is defeated if the MR goes into a blocked/manual state.