Jenkins声明式Pipeline执行指定条件阶段后如何跳过后续所有阶段
Jenkins声明式Pipeline实现方案
核心思路
- 定义一个全局状态标记位,默认值为
false,用来标识是否需要跳过后续所有阶段 - 目标特定阶段执行完成后,将该标记位设置为
true - 后续所有阶段都添加
when条件判断,仅当标记位为false时才执行
具体实现示例
我们假设你提到的特定stage是第一个名为ConditionalStage的阶段,满足触发条件执行后跳过后面3个stage,完整Jenkinsfile示例如下:
pipeline { agent any environment { // 定义全局跳过标记,默认不跳过 SKIP_REMAINING = 'false' } stages { stage('ConditionalStage') { // 你的特定条件stage when { // 这里替换为你原来的触发条件,比如分支匹配、参数触发等 expression { params.RUN_SPECIAL_STAGE == true } } steps { // 你该stage的原有业务逻辑 echo 'Running special conditional stage' } post { success { // 只要该stage成功执行,就标记跳过后续 // 如果只要触发执行不管成功失败都跳,就写在always块里 env.SKIP_REMAINING = 'true' } } } stage('Stage2') { when { expression { env.SKIP_REMAINING == 'false' } } steps { echo 'Running stage 2' } } stage('Stage3') { when { expression { env.SKIP_REMAINING == 'false' } } steps { echo 'Running stage 3' } } stage('Stage4') { when { expression { env.SKIP_REMAINING == 'false' } } steps { echo 'Running stage 4' } } } }
可选调整说明
- 如果要求特定stage只要触发执行(无论执行成功还是失败)都跳过后续阶段,就把修改
SKIP_REMAINING的逻辑放到post下的always块即可 - 如果你的特定stage不是第一个,只需要把后续的所有stage都加上对应的
when判断即可,逻辑完全通用
内容的提问来源于stack exchange,提问作者Alon Tsaraf
相关产品推荐
相关产品推荐

