Job conditions allow to skip or pass jobs on certain criteria.
Passing rules operate on job environment parameters is in .<param> $condition form, for example:
Skip job_one is commit message is equal to 'skip'
jobs:
-
id: job_one
path: .
skip: .<message> eq "skip"One can combine multiple job env parameters using standard AND/OR/||/&& operators from Boolean logic:
jobs:
-
id: job_one
path: .
skip: .<message> eq "skip" or .<ref> eq "refs/heads/dev"Branch/Tag name. Example:
refs/heads/main
Commit message
Full repository name. Example:
root/go-build-example
Commit SHA. Example:
689b7f1e30537514759ce40086fd2218fb95793d
Git repository URL. Example:
http://127.0.0.1:3000/root/go-build-example.git
One may use Raku regular expression to match against them.
Following example only passes job with branch name dev or master:
jobs:
-
id: job_one
path: .
only: .<ref> ~~ "refs/heads/" [ master | main ]One can use Parenthesis for grouping of logical expressions.
jobs:
-
id: job_one
path: .
only: >
( .<ref> eq "refs/heads/main" and .<message> eq "release_prod" ) or
( .<ref> eq "refs/heads/dev" and .<message> eq "release_dev" )Following the list of operators one may use:
equivalent to string
not equivalent to string
less then, greater then, less or equal, greater or equal, not equal then an Int
regular expression matching
regular expression matching, negation form
One can modify regular expression modifiers, to change matching logic.
Following example skip job if commit message is skip_ci or Skip_Ci or SKIP_CI - case insensitive
modifier
jobs:
-
id: job_one
path: .
skip: m:i/skip_ci/ Follow ~Raku regexs for details
To globally skip/pass all jobs use global: key in the root of pipeline configuration:
global:
skip: .<message> ~~ m:/skip/
jobs:
-
id: job_one
path: .