How do I configure Jenkins to build all branches except a few which I exclude?

How about using

^(?!.*master).*$

as branch specifier. This regexp means all branches not matching master.

Breakdown:

^(?!.*master).*$
^                ---> beginning of string
 (?!        )    ---> negative lookahead find all that doesnt match
    .*           ---> zero or more of 'any' character
      master     ---> should not match master
             .*$ ---> will match anything to the end of string

Related: https://stackoverflow.com/a/18709097/109305


I needed using the Jenkins tool "filter branch by regex", and I discovered flavor of that regex works just with back reference. So, following the Jesper response and this issue, here I did two more examples:

^(?:.*release\/\d+.\d+.\d+(?!.))$
// check all branches like "release/0.0.0" or "origin/release/1.2.3"
^(?:.*release\/\d+.\d+.\d+_any)$
// check all branches like "release/0.0.0_any" or "origin/release/1.2.3_any"

I hope this would helpful for someone

EDIT - New example

^(?:origin\/develop|origin\/master|origin\/release\/\d+\.\d+\.\d+(?!.)|origin\/release\/\d+\.\d+\.\d+(?:_uat|_preprod))$

or

^(?:.*develop|.*master|.*release/\d+\.\d+\.\d+(?!.))$

Tags:

Git

Regex

Jenkins