在 Jenkins 中设置和访问全局环境变量

setting and accessing global environment variable in Jenkins

我有一个 Jenkins 管道视图。例如,第一份工作是 BUILD,然后是 DEPLOYTEST 工作。我在这里想要实现的是在测试作业中有一个 'rollback logic' ,这意味着当测试作业是 运行 并且它成功时我想将当前构建号设置为全局环境变量(这样我就可以从任何工作中访问内部版本号)可能称为 TESTED_BUILD_NO。但是,如果测试失败,那么我想通过传递 TESTED_BUILD_NO 来触发 DEPLOY 作业,这将部署最后一个测试版本。

有一个名为 promotion builds plugin 的插件,它提到了 PROMOTION_BUILD_NO 变量,但是当我查看 /env-vars.html 时,它并没有列在那里。我也厌倦了看 api/xml 但没有提到任何促销变量。我这里说的这个逻辑可以用这个插件来实现吗?如果不是,如何在 Jenkins 中设置和访问全局环境?

最好建议您从系统管理屏幕管理全局变量:

管理 Jenkins -> 配置系统 -> 全局属性 与在 Jenkins 外部设置这些相比更可靠。

这可以使用脚本或通过执行 shell/batch 来更改。 或者您可以使用简单的 groovy 脚本根据以前的 command/build 状态更改值。

除了使用全局变量,您始终可以使用 lastStableBuild,它由 jenkins 自动设置。在 DEPLOY 作业中,使用 link 到 lastStableBuild 来自 TEST 作业,其形式为:http://JENKINS_ADDRESS/job/JENKINS_JOB/lastStableBuild/

根据詹金斯 wiki:

Stable build A build is stable if it was built successfully and no publisher reports it as unstable.