Introduce the manual keyword
Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.
Problem 1: allow_failure
Problem 1.a.
We control the blocker behavior of a manual job by the allow_failure keyword. Actually, it has other responsibilities; "determine whether a pipeline should continue running when a job fails".
A manual job is not a blocker when it has allow_failure: true (by default). It's a blocker when it has allow_failure: false. We cannot have a manual job that is allow_failure: false and not a blocker.
job1:
stage: test
when: manual
job2:
stage: deploy
job1 is just skipped and job2 runs. And when we run job1, if it fails, it's allowed to fail. The decision to block depends on allow_failure.
related issue: #20237
Problem 1.b.
We have two different "blocker" behaviors of manual jobs according to their dependants: DAG or STAGE.
job1:
stage: test
when: manual
job2:
stage: deploy
needs: [job1]
job1 is just skipped but it blocks job2 because of the DAG relation.
Proposal
-
manual:andwhen: manualcan not be present in the same job. - if
manual:is defined, thenallow_failurewill have no function in terms of "blocking".
job1:
manual: true # `block: false` by default
job2:
manual:
block: true # Default is false
job3:
manual:
block: false # Default behavior
This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.