You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于JSON参数迭代现有Jenkins多阶段流水线并保留原结构

Jenkins流水线JSON参数迭代原有阶段解决方案

核心逻辑

  • 新增入口阶段负责解析JSON格式的执行列表参数
  • 原有10个阶段全部封装为独立方法,保留所有原有逻辑
  • 通过循环遍历JSON解析后的列表,动态调用对应阶段方法,完全复用原有结构

完整实现代码

pipeline {
    agent any
    parameters {
        // 替换原有单个字符串参数的JSON数组参数,支持指定任意数量的待执行阶段
        string(
            name: 'STAGES_TO_RUN',
            defaultValue: '["build", "unitTest", "integrationTest", "smokeTest", "deploy"]',
            description: 'JSON格式的待执行阶段列表,例如:["build", "deploy"]'
        )
    }
    stages {
        // 新增的入口控制阶段
        stage('Execute Target Stages') {
            steps {
                script {
                    // 解析JSON参数为Groovy可遍历的列表
                    def targetStages = readJSON text: params.STAGES_TO_RUN
                    
                    // 循环执行指定阶段
                    targetStages.each { stageId ->
                        switch(stageId) {
                            case 'build':
                                runBuildStage()
                                break
                            case 'unitTest':
                                runUnitTestStage()
                                break
                            case 'integrationTest':
                                runIntegrationTestStage()
                                break
                            case 'smokeTest':
                                runSmokeTestStage()
                                break
                            case 'deploy':
                                runDeployStage()
                                break
                            // 补充你其余5个原有阶段的case分支
                            default:
                                echo "⚠️ 未知阶段:${stageId},已跳过执行"
                        }
                    }
                }
            }
        }
    }
}

// ---------------------- 原有阶段封装(完全保留原有逻辑) ----------------------
void runBuildStage() {
    stage('Build') {
        steps {
            echo '执行构建操作...'
            // 替换为你原有的构建代码,例如:
            // sh 'npm install && npm run build'
        }
    }
}

void runUnitTestStage() {
    stage('Unit Test') {
        steps {
            echo '执行单元测试...'
            // 替换为你原有的单元测试代码,例如:
            // sh 'npm run test:unit'
        }
    }
}

void runIntegrationTestStage() {
    stage('Integration Test') {
        steps {
            echo '执行集成测试...'
            // 替换为你原有的集成测试代码
        }
    }
}

void runSmokeTestStage() {
    stage('Smoke Test') {
        steps {
            echo '执行冒烟测试...'
            // 替换为你原有的冒烟测试代码
        }
    }
}

void runDeployStage() {
    stage('Deploy') {
        steps {
            echo '执行部署操作...'
            // 替换为你原有的部署代码
        }
    }
}

关键注意事项

  • 所有原有阶段都被封装为独立的Groovy方法,无需修改原有阶段的任何内部逻辑,完全保留原有结构
  • 入口阶段通过readJSON步骤解析参数,确保JSON格式的参数能被Groovy正确处理
  • 通过switch-case匹配阶段ID,避免直接硬编码流水线结构,后续新增/修改阶段只需补充/调整case分支即可
  • 执行时只需修改STAGES_TO_RUN的JSON值,就能灵活控制要执行的阶段组合,比如["build", "smokeTest", "deploy"]就只执行这三个阶段

内容的提问来源于stack exchange,提问作者Jean-Michel Rousseau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 07:07:48