Jenkins脚本化管道中的分支指定符正则表达式

时间:2019-03-13 21:24:12

标签: regex jenkins groovy jenkins-pipeline

假设我想为同一脚本管道下的不同分支定义管道,如何为某些分支模式定义正则表达式。例如说:-

if(env.BRANCH_NAME ==~ /release.*/){
	 stage("Deploy"){
		echo 'Deployed release to QA'
	 }

在这里,我想以这种方式为模式的任何分支定义该正则表达式

*release*

(表示其中包含释放字符串的任何分支)。 如何实现?

类似地,如何实现类似:-

如果分支除了开发之外,请掌握,发布(模式)。

2 个答案:

答案 0 :(得分:2)

如果您使用的是Groovy,则可以使用以下内容

if ((env.BRANCH_NAME =~ '.*release.*').matches()) {
    stage("Deploy"){
        echo 'Deployed release to QA'
    }
}

如果要匹配除developmasterrelease以外的任何分支名称,则可以使用the following regex

if ((env.BRANCH_NAME =~ '^((?!develop|master|release).)*$').matches()) {
    stage("Deploy"){
        echo 'Deployed release to QA'
    }
}

答案 1 :(得分:0)

您可以使用此正则表达式来匹配分支名称,例如developreleasehotfix

if (branch_name =~ 'develop|hotfix.*|release.*') {

  stage("Deploy") {
        echo 'Deployed release to QA'
    }
}