我正在尝试创建仅对某些Gerrit项目运行的Jenkins管道步骤。特别是对于所有变量GERRIT_PROJECT以“ platform / zap”开头的项目。 可悲的是,我缺乏Groovy的技能。
这是我到目前为止得到的:
stage ('zap') {
when {
expression {
isMatch = env.GERRIT_PROJECT =~ /^platform\/zap/
return isMatch
}
}
steps {
build job: 'Zap', parameters: [
string(name: 'ZAP_PROJECT', value: env.GERRIT_PROJECT)
]
}
}
换句话说,应该对“ platform / zap / os”执行此阶段,而不对“ app / hello”执行。
任何指导将不胜感激。
答案 0 :(得分:3)
如果String.startsWith(str)
以true
开头,则可以使用env.GERRIT_PROJECT
返回platform/zap
。
stage ('zap') {
when {
expression {
env.GERRIT_PROJECT?.startsWith("platform/zap")
}
}
steps {
build job: 'Zap', parameters: [
string(name: 'ZAP_PROJECT', value: env.GERRIT_PROJECT)
]
}
}
如果出于某些原因env.GERRIT_PROJECT
为空,则要避免NPE,可以使用NPE安全操作符?.
来调用startsWith
方法。
将Groovy的完全匹配运算符与regex结合使用的替代解决方案可能看起来像这样:
stage ('zap') {
when {
expression {
env.GERRIT_PROJECT ==~ /^platform\/zap(.*)$/
}
}
steps {
build job: 'Zap', parameters: [
string(name: 'ZAP_PROJECT', value: env.GERRIT_PROJECT)
]
}
}
答案 1 :(得分:1)
https://jenkins.io/doc/book/pipeline/syntax/
分区环境:
环境
当指定的环境变量执行阶段 设置为给定值,例如:当{环境名称: 'DEPLOY_TO',值:'production'}
也许这可以帮助您?