rules

rules:if

Use rules:if clauses to specify when to add a job to a pipeline:

    If an if statement is true, add the job to the pipeline.
    If an if statement is true, but it’s combined with when: never, do not add the job to the pipeline.
    If no if statements are true, do not add the job to the pipeline. 

rules:changes

negate glob?

How to negate rules:changes pattern?

Not possible. rules:changes takes glob patterns and they are inclusive only. You have to specify all paths/patterns to match one by one.

BUT:

Glob patterns are interpreted with Ruby’s File.fnmatch with the flags File::FNM_PATHNAME | File::FNM_DOTMATCH | File::FNM_EXTGLOB.

Ruby's fnmatch is used to handle patterns. It doesn't support ! character.

To write rule to do not match changes in src//* directory but matches s, sr, src2: <code yaml> rules: - changes: - “{[^s]*,s,s[^r]*,sr,sr[^c]*,src?*}//*” - “*” </code> Note: second pattern * is for match any file (but not directory!) More, to exclude src/ and doc/: <code yaml> rules: - changes: - “{[^s^d]*,s,d,s[^r]*,d[^o],sr,do,sr[^c]*,do[^c]*,src?*,doc?*}//*” - “*” </code> More about: * Is there a way to write a glob pattern that matches all files except those in a folder? * gitlab CI/CD rules:changes negate glob