分支设置时对Jenkinsfile的模式评估是什么?

时间:2018-10-02 12:13:16

标签: jenkins jenkins-pipeline devops

我正在尝试在阶段内的when语句中检测分支模式。

赞:

stage('deploy to staging') {
agent label:'some-node'
when { branch "feature/*" }
steps {
    sh './deploy_pr.sh'
}

}

如果我想要更复杂的图案怎么办?

我正在尝试检测诸如feature / 0.10.25之类的内容,并且以下模式不起作用:

when { branch 'feature/[0-9]+.[0-9]+.[0-9]+' }

不起作用。根据{{​​3}}

,这是正确的正则表达式

1 个答案:

答案 0 :(得分:2)

好!因此,通过错误堆栈跟踪,我发现在when-branch选项上,Jenkins与Ant样式模式进行了比较: https://ant.apache.org/manual/dirtasks.html

这意味着它不希望使用正则表达式,但是更简单的东西例如:

        */staging/*

我改用when-expression选项解决了这个问题,

        when { 
            expression { BRANCH_NAME ==~ /feature\/[0-9]+\.[0-9]+\.[0-9]+/ }
        }

它使用groovy表达式,如下所述:

https://www.regular-expressions.info/groovy.html

尤其是寻找==〜运算符的解释,这很有帮助。

对于正则表达式本身,您可以在此处进行测试:

https://regexr.com/