如何在Jenkins Pipeline中实现从指定阶段启动并执行后续所有阶段
Jenkins Pipeline 任意阶段启动解决方案
核心逻辑是为所有阶段按执行顺序建立索引,通过判断当前阶段索引是否大于等于选中的启动阶段索引,实现从指定阶段开始向后全量执行。
修改后完整代码
pipeline { agent any parameters { choice(name: 'START_FROM', choices: ['stage1', 'stage2', 'stage3'], description: 'Choose which step to start the job on.') } environment { // 按实际阶段执行顺序维护列表,需和parameters中的choices选项顺序、名称完全一致 STAGE_LIST = ['stage1', 'stage2', 'stage3'] } stages { stage('stage1') { when { expression { STAGE_LIST.indexOf(params.START_FROM) <= STAGE_LIST.indexOf('stage1') } } steps { echo "stage1 executing" } } stage('stage2') { when { expression { STAGE_LIST.indexOf(params.START_FROM) <= STAGE_LIST.indexOf('stage2') } } steps { echo "stage2 executing" } } stage('stage3') { when { expression { STAGE_LIST.indexOf(params.START_FROM) <= STAGE_LIST.indexOf('stage3') } } steps { echo "stage3 executing" } } } }
核心改动说明
- 新增
STAGE_LIST全局变量统一维护阶段执行顺序,后续新增阶段只需同步修改该列表和parameters中的choices配置即可,维护成本低 - 将原when条件的全等判断替换为索引大小判断:只要当前阶段的执行顺序在选中的启动阶段之后(含自身),就会触发执行
- 修正了原代码中stage2、stage3的echo输出内容错误
内容的提问来源于stack exchange,提问作者nateph
相关产品推荐
相关产品推荐

