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.

  • Close this issue

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.

Edited Jun 23, 2025 by 🤖 GitLab Bot 🤖
Assignee Loading
Time tracking Loading