在 Jenkins 中设置和访问全局环境变量
setting and accessing global environment variable in Jenkins
我有一个 Jenkins 管道视图。例如,第一份工作是 BUILD
,然后是 DEPLOY
和 TEST
工作。我在这里想要实现的是在测试作业中有一个 '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.
我有一个 Jenkins 管道视图。例如,第一份工作是 BUILD
,然后是 DEPLOY
和 TEST
工作。我在这里想要实现的是在测试作业中有一个 '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.