I am trying to detect the branch pattern on a when statement inside a stage.
Like this:
stage('deploy to staging') {
agent label:'some-node'
when { branch "feature/*" }
steps {
sh './deploy_pr.sh'
}
}
What if I want a more complicated pattern?
I am trying to detect something like feature/0.10.25 and the following pattern doesn't work:
when { branch 'feature/[0-9]+.[0-9]+.[0-9]+' }
Doesn't work . And it's a correct regexp, according to https://regexr.com/
Ok ! So, through the error stack trace I found out that on the when-branch option, Jenkins compares with Ant style patterns:
https://ant.apache.org/manual/dirtasks.html
That means it doesn't expect regexp, but simpler stuff like:
*/staging/*
I solved this by using the when-expression option instead, like this:
when {
expression { BRANCH_NAME ==~ /feature\/[0-9]+\.[0-9]+\.[0-9]+/ }
}
That uses groovy expressions as described here:
https://www.regular-expressions.info/groovy.html
Especially, look for the explanation of the ==~ operator, that was helpful.
For the regular expression itself, you can test yours here:
https://regexr.com/