gpt4 book ai didi

用于匹配分支 Jenkins 声明性管道的正则表达式

转载 作者:行者123 更新时间:2023-12-04 16:04:05 26 4
gpt4 key购买 nike

我有一个要求也允许使用 master 分支进行补丁分支(我们使用 git)。

stages {
stage('PR Build') {
when {
beforeAgent true
expression {
isMaster = env.BRANCH_NAME == masterBranchName
isPatch = env.BRANCH_NAME !=~ /Patch_For_*([a-z0-9]*)/
echo "isMaster : ${isMaster} , isPatch : ${isPatch}"
return !isMaster && !isPatch
}
}
steps {
script{
buildType = 'PR'
}
// Do PR build here...
}
}

stage('Build master / patch branch') {
when {
beforeAgent true
expression {
isMaster = env.BRANCH_NAME == masterBranchName
isPatch = env.BRANCH_NAME !=~ /Patch_For_*([a-z0-9]*)/
echo "isMaster : ${isMaster} , isPatch : ${isPatch}"
return isMaster || isPatch
}
}
steps {
script {
buildType = 'deployment'
)
}
// Do master or patch branch build and deployment
}
}

这里的问题是补丁分支的正则表达式部分。我希望 jenkins 检查补丁分支是否以 Patch_For_shortCommitIDSha 开头,例如 Patch_For_87eff88

但是我写错的正则表达式允许除以 Patch_For_

开头的分支以外的分支

最佳答案

问题在于 NOT 运算符。

'!=~' 不是 Groovy 的有效匹配运算符,必​​须替换。 IF NOT MATCH 正则表达式的重写形式应如下所示:

isPatch = !(env.BRANCH_NAME =~/Patch_For_*([a-z0-9]*)/)

所以你看,NOT 运算符 ! 应该超出 bool 匹配表达式,它应该被括在括号中,而不是放在它之前。

关于用于匹配分支 Jenkins 声明性管道的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52513375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com