Jenkins - 如果上游作业启动作业,则更改属性

时间:2017-03-08 00:20:39

标签: jenkins jenkins-plugins jenkins-pipeline

我在Jenkins中有2个工作:父和子(在Parent上成功构建触发器在Child上构建)。

两个项目都有一个属性VALUE:

  • 项目家长:VALUE = FIRST
  • 项目子项:VALUE = NEXT

我想要的是如果我直接构建作业Child,VALUE = NEXT。但是,如果作业Child由上游作业Parent启动,则该属性将被覆盖,VALUE = FIRST。

我尝试在Parent上设置后构建操作以触发Child上的参数化构建,并定义参数VALUE = FIRST。但是在运行Parent并在Child上触发构建之后,我查看了Child的控制台输出和VALUE = NEXT:它没有改变。

(我测试将参数VALUE传递给Child,如果在Child中未定义VALUE并且它工作正常,则VALUE等于FIRST。因此,Jenkins能够传递参数,但如果参数已在下游作业中定义,则无法覆盖该参数。)

如何覆盖下游作业中的属性?

2 个答案:

答案 0 :(得分:2)

请注意,如果您在沙盒中运行脚本,则需要一些批准。

isUpstreamTriggered = (currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause) != null)

有关详情the example I've based onthe actual Cause class

答案 1 :(得分:1)

这是旧文章,但我认为值得一提的第二个选择是确定当前构建是否由上游项目引起。

   `def upstreamProjectCount = 0;
    currentBuild.upstreamBuilds?.each { b ->
        upstreamProjectCount++
    }
    if (upstreamProjectCount == 0) {
        echo "Not a upstream project"
    } else {
        echo "upstream project"
    }