Jenkins-如果作业由上游作业启动,则更改属性
我在詹金斯有两份工作:父母和孩子(成功地建立在父母的基础上会触发建立在孩子的基础上) 两个项目都有一个属性值:Jenkins-如果作业由上游作业启动,则更改属性,jenkins,jenkins-plugins,jenkins-pipeline,Jenkins,Jenkins Plugins,Jenkins Pipeline,我在詹金斯有两份工作:父母和孩子(成功地建立在父母的基础上会触发建立在孩子的基础上) 两个项目都有一个属性值: 项目父项:值=第一个 项目子项:值=下一个 我想要的是,如果我直接构建job子级,VALUE=NEXT。但是,如果作业子项由上游作业父项启动,则该属性将被覆盖,并且值=第一个 我尝试在父级上设置生成后操作以触发在子级上的参数化生成,并定义了参数值=FIRST。然而,在运行Parent并在Child上触发构建之后,我查看了Child和VALUE=NEXT的控制台输出:它没有改变 (我
- 项目父项:值=第一个
- 项目子项:值=下一个
如何覆盖下游作业中的属性?请注意,如果您在沙盒中运行脚本,这需要一些批准
isUpstreamTriggered = (currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause) != null)
更多信息和。这是一篇老文章,但我认为值得给出第二个选项,以确定当前构建是否是由上游项目引起的
`def upstreamProjectCount = 0;
currentBuild.upstreamBuilds?.each { b ->
upstreamProjectCount++
}
if (upstreamProjectCount == 0) {
echo "Not a upstream project"
} else {
echo "upstream project"
}
在这两个项目中,您在哪里定义了“VALUE”属性?很抱歉,答复太晚,但我已经解决了这个问题。值在子作业中通过EnvInject定义为环境变量,而不是参数。因此,当试图传递参数值以覆盖环境变量值时,它遇到了问题。通过修改子作业以使值成为参数,我能够成功地将新参数从父作业传递到子作业。因此,如何在两个项目中定义它最终成为发布者,这非常有效!但是它比需要的时间长了一点,我将它缩减为
if(currentBuild.upstreamBuilds){…}
。如果upstreamBuilds
不存在,或者存在但为空,Groovy认为它是错误的。如果它存在并且至少包含1个元素,那么它是真实的。