当/ changelog时,如何在Jenkins管道中使用带有标志的正则表达式?

时间:2018-05-09 22:45:40

标签: jenkins jenkins-pipeline

我有一个Jenkins管道阶段,如果在第一行不在when形式的提交消息(大小写和一些空格不敏感)中没有魔术字符串,我想跳过它。我试图使用changelog指令和.../im条件,但它似乎不喜欢我的正则表达式,因为它的格式错误或字面解释标志{ {1}}或转义空白\s。我不太清楚如何有效地调试它......

stage('Publish') {
    when {
         changelog '/.*^release:\\s*(major|minor|patch)\\s*$/im'
    }
    # ...
}

当它是"裸露的"像changelog /.*^这样的正则表达式...它有语法错误。

有没有办法让正则表达式工作,或者像

这样的其他解决方案
when {
    expression { 
        ???? ==~ /.*^release:\\s*(major|minor|patch)\\s*$/im 
    }
好吗?不知道什么可以放入????。

1 个答案:

答案 0 :(得分:0)

在Groovy / Java中,正则表达式标志应该在开头,并用括号括起来,如/(?im).*^release:\s*(major|minor|patch)\s*$/
您还可以从currentBuild.changeSets获取提交更改集。对于git,它返回一组GitChangeSet

以下内容应该有效

when {
    expression { 
        currentBuild.changeSets.any { it.comment =~ /(?im).*^release:\s*(major|minor|patch)\s*$/ }
    }
}