2. 配置Jenkins参数化构建

任务目标

为 Jenkins 自由风格任务添加字符串参数(如目标环境)和布尔参数(如是否执行测试),在构建步骤中读取并输出这些参数,最后通过触发两次不同参数值的构建来验证参数传递效果。

前置条件

  • Jenkins 已安装并启动,可访问 http://<jenkins-url>。
  • 已安装推荐插件(含 Parameterized Build,通常默认包含在自由风格任务中)。
  • 准备一个简单的测试任务,或新建一个用于本案例。

实现步骤

1. 创建任务并添加参数

  1. 点击 新建任务,输入名称(如 param-demo),选择自由风格项目。
  2. 在任务配置页勾选 参数化构建过程。
  3. 添加两个参数:
参数类型名称默认值描述
字符串参数TARGET_ENVdev部署目标环境
布尔参数RUN_TESTStrue是否执行测试

2. 在构建步骤中使用参数

在构建部分添加一个执行 Shell 步骤,输入以下脚本:

echo "部署环境: ${TARGET_ENV}"
if [ "$RUN_TESTS" = "true" ]; then
    echo "执行测试..."
    # 模拟测试命令
    echo "测试通过"
else
    echo "跳过测试"
fi
echo "构建完成,目标环境=${TARGET_ENV}"

保存任务配置。

3. 触发构建并验证

验证方式:分别以不同参数值触发两次构建,观察控制台输出是否与传入参数一致。

第一次触发(默认值):

  1. 点击任务左侧的 立即构建(或进入任务页点击 Build with Parameters)。
  2. 若点击 Build with Parameters,直接点击 开始构建,使用默认值 TARGET_ENV=dev、RUN_TESTS=true。

第二次触发(自定义值):

  1. 点击 Build with Parameters。
  2. 将 TARGET_ENV 改为 prod,取消勾选 RUN_TESTS。
  3. 点击 开始构建。

4. 判定通过条件

  • 第一次构建的控制台输出包含:部署环境: dev、执行测试...、测试通过。
  • 第二次构建的控制台输出包含:部署环境: prod、跳过测试。
  • 两次输出均以 构建完成,目标环境=... 结尾,且环境值与传入值一致。

若输出与上述一致,则说明参数化构建配置成功,参数在构建步骤中正确传递并被读取。

常见问题

  • 构建步骤中无法读取参数:确认参数名拼写一致,且构建步骤位于同一任务配置中;Shell 中变量引用使用 ${参数名} 格式。
  • 布尔参数判断失效:Jenkins 布尔参数传递的值为字符串 "true" 或 "false",需用引号包裹比较,如 [ "$RUN_TESTS" = "true" ]。
  • 没有“参数化构建过程”选项:确认任务类型为自由风格,且 Jenkins 已安装必要插件(通常默认包含)。