Jenkins声明式Pipeline如何实现指定阶段仅在Restart from stage时运行
解决方案
Jenkins 内置了专门的环境变量满足这个判断需求,不需要额外安装第三方插件。
你可以直接使用BUILD_RESTARTED_FROM_STAGE环境变量:当用户点击「从阶段重启」触发构建时,该变量会被赋值为用户选择的重启阶段的准确名称,常规首次构建时该变量值为空。
你给出的代码可以修改为如下形式:
stage('Test') { when { expression { // 判断本次构建是否是从当前Test阶段重启触发的 env.BUILD_RESTARTED_FROM_STAGE == 'Test' } } steps { sh 'echo 1' } }
补充说明
- 阶段名称匹配是严格校验的,大小写、空格、特殊字符都需要完全一致
- 如果你的需求是「只要是从任意阶段重启就执行当前阶段」,可以把判断条件改为
env.BUILD_RESTARTED_FROM_STAGE != null - 该变量由Pipeline: Job插件内置提供,2.30及以上版本的插件均支持,主流Jenkins版本默认都包含符合要求的插件版本
内容的提问来源于stack exchange,提问作者Brahim Ben Amira
相关产品推荐
相关产品推荐

