4. 参数化构建

任务说明

为 Jenkins 项目配置参数化构建,支持字符串、布尔值、选择三类参数,并在流水线中读取这些参数控制构建逻辑。完成后,每次构建时 Jenkins 会提示输入参数,构建过程根据参数值产生不同行为。

实现步骤

  1. 在 Jenkins 任务配置中勾选“参数化构建过程”,添加三类参数。
  2. 在流水线脚本中通过 params 对象读取参数值。
  3. 根据参数值执行不同分支逻辑。

完整实现

以下为 Jenkinsfile(Declarative Pipeline)完整内容,可直接粘贴到 Jenkins 任务的 Pipeline 脚本中:

pipeline {
    agent any

    parameters {
        string(name: 'BRANCH', defaultValue: 'main', description: '要构建的分支名称')
        booleanParam(name: 'RUN_TESTS', defaultValue: true, description: '是否执行单元测试')
        choice(name: 'DEPLOY_ENV', choices: ['dev', 'staging', 'prod'], description: '部署目标环境')
    }

    stages {
        stage('Checkout') {
            steps {
                echo "Checking out branch: ${params.BRANCH}"
                // 实际项目中此处为: git branch: "${params.BRANCH}", url: 'your-repo-url'
            }
        }
        stage('Build') {
            steps {
                echo "Building application..."
                // 模拟编译过程
                sh 'echo "Compiling code..."'
            }
        }
        stage('Test') {
            when {
                expression { return params.RUN_TESTS }
            }
            steps {
                echo "Running unit tests..."
                sh 'echo "Executing test suite..."'
            }
        }
        stage('Deploy') {
            steps {
                echo "Deploying to ${params.DEPLOY_ENV} environment"
                sh "echo 'Deploying to ${params.DEPLOY_ENV}'"
            }
        }
    }

    post {
        always {
            echo "Build completed. Branch: ${params.BRANCH}, Tests: ${params.RUN_TESTS}, Env: ${params.DEPLOY_ENV}"
        }
    }
}

参数配置说明

参数类型名称配置项用途
StringBRANCH默认值 main指定源码分支
BooleanRUN_TESTS默认勾选控制是否执行测试阶段
ChoiceDEPLOY_ENVdev/staging/prod选择部署环境

运行与验证

  1. 在 Jenkins 中新建任务,选择“流水线”(Pipeline)类型。
  2. 在 Pipeline 区域选择“Pipeline script”,将上述代码粘贴到 Script 输入框。
  3. 点击“保存”,然后点击“立即构建”——此时 Jenkins 会弹出参数填写页面。
  4. 修改参数值(例如将 RUN_TESTS 取消勾选,选择 DEPLOY_ENV=prod),点击“构建”。

通过条件:

  • 构建开始时出现参数填写界面,且三类参数均正确显示。
  • 控制台输出中,Checkout 阶段显示填写的分支名。
  • 当 RUN_TESTS 未勾选时,Test 阶段被跳过;勾选时则执行。
  • Deploy 阶段输出显示所选环境(如 Deploying to prod)。
  • 构建最终状态为成功,post 步骤打印包含全部参数值的汇总信息。

常见问题

  • 参数不生效:确认任务配置中已勾选“参数化构建过程”,且参数名称与 params.XXX 完全一致(区分大小写)。
  • Choice 参数默认值:第一个选项为默认选中项,如需修改默认环境,调整 choices 列表顺序即可。
  • 自由风格任务:若使用自由风格任务,可在构建步骤中通过环境变量 $BRANCH、$RUN_TESTS、$DEPLOY_ENV 引用参数值,效果相同。