用于匹配分支 jenkins 声明管道的正则表达式
Regex for matching branch jenkins declarative pipeline
我有一个要求也允许补丁分支与主分支(我们使用 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
}
}
这里的问题出在 Patch 分支的正则表达式部分。我想让詹金斯检查补丁分支是否以 Patch_For_shortCommitIDSha
开头,例如 Patch_For_87eff88
但是我写错的正则表达式允许除了以[=13=]
开头的分支以外的分支
问题出在 NOT 运算符上。
'!=~' 不是 Groovy 的有效匹配运算符,必须替换。重写的 IF NOT MATCH 正则表达式形式,应如下所示:
isPatch = !(env.BRANCH_NAME =~ /Patch_For_*([a-z0-9]*)/)
所以你看,NOT 运算符 ! 应该超出布尔匹配表达式,它应该包含在括号中而不是放在它前面。
这对我有用。
isPatch = (env.BRANCH_NAME ==~ /Patch_For_*([a-z0-9]*)/)
我有一个要求也允许补丁分支与主分支(我们使用 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
}
}
这里的问题出在 Patch 分支的正则表达式部分。我想让詹金斯检查补丁分支是否以 Patch_For_shortCommitIDSha
开头,例如 Patch_For_87eff88
但是我写错的正则表达式允许除了以[=13=]
开头的分支以外的分支问题出在 NOT 运算符上。
'!=~' 不是 Groovy 的有效匹配运算符,必须替换。重写的 IF NOT MATCH 正则表达式形式,应如下所示:
isPatch = !(env.BRANCH_NAME =~ /Patch_For_*([a-z0-9]*)/)
所以你看,NOT 运算符 ! 应该超出布尔匹配表达式,它应该包含在括号中而不是放在它前面。
这对我有用。
isPatch = (env.BRANCH_NAME ==~ /Patch_For_*([a-z0-9]*)/)