【发布时间】:2020-05-09 09:09:45
【问题描述】:
我在 Jenkins 有 2 个工作:Parent 和 Child(成功构建 Parent 会触发构建 Child)。
两个项目中都有一个属性 VALUE:
- 项目父项:VALUE=FIRST
- 子项目:VALUE=NEXT
我想要的是,如果我直接构建作业 Child,VALUE=NEXT。但是如果作业 Child 由上游作业 Parent 启动,则该属性将被覆盖并且 VALUE=FIRST。
我尝试在 Parent 上设置构建后操作以在 Child 上触发参数化构建并定义参数 VALUE=FIRST。然而,在运行 Parent 并在 Child 上触发构建后,我查看了 Child 和 VALUE=NEXT 的控制台输出:它没有改变。
(如果在 Child 中未定义 VALUE 并且它起作用,我测试了将参数 VALUE 传递给 Child,VALUE 等于 FIRST。因此 Jenkins 能够传递参数,但如果它已经在下游作业中定义,则无法覆盖该参数.)
如何覆盖下游作业中的属性?
【问题讨论】:
-
两个项目中的“VALUE”属性在哪里定义?
-
抱歉回复晚了,但我已经解决了这个问题。 VALUE 在子作业中通过 EnvInject 定义为环境变量,而不是参数。因此,当尝试传递参数 VALUE 以覆盖环境变量 VALUE 时,它遇到了问题。通过修改子作业以使 VALUE 成为参数,我能够成功地将新参数从父作业传递给子作业。
-
所以如何在两个项目中定义最终成为问题
标签: jenkins jenkins-plugins jenkins-pipeline