jenkins 通过 promoted builds plugin 实现预发布测试通过后自动升迁,需三步联动:一、构建归档产物并保留历史;二、用下游 job 或远程调用执行预发布测试并标记结果;三、配置 promotion process 监听测试 job 成功后执行生产部署。

在 Linux 上用 Jenkins 的 Promoted Builds Plugin 实现“预发布环境通过测试后自动升迁发布”,核心是把“测试通过”这个信号转化为可触发的 promotion 行为,并让后续部署动作只对被 promote 的构建执行。这不是单纯勾选“自动”就能完成,需要分三步联动:构建产出、测试验证、条件化升迁。
一、确保构建产物可复用且带唯一标识
预发布环境测试必须基于和最终上线完全一致的构建产物(如 jar、war、Docker 镜像)。因此:
- 构建阶段不要在 job 中直接部署到预发布环境;而是将产物归档(Archive the artifacts),例如
target/*.jar或推送镜像到 Harbor/Registry,并记录镜像 tag(如${BUILD_ID}) - 启用 “Discard old builds” 但保留足够数量(至少 10+),避免 promotion 时构建已被清理
- 推荐使用 Pipeline 脚本控制构建过程,明确输出
env.BUILD_NUMBER和env.GIT_COMMIT,便于后续追溯
二、在预发布环境运行测试并标记结果
Promotion 的触发依据不是“构建成功”,而是“某次构建在预发布环境验证通过”。实现方式有两种:
-
方式 A(推荐):用独立的 downstream job 做预发布测试
新建一个 Freestyle 或 Pipeline job(如test-staging),参数化接收BUILD_NUMBER和PROJECT_NAME;它从上游拉取对应构建的归档产物,部署到预发布服务器,执行接口测试/Smoke Test;最后用sh 'echo "TEST_RESULT=SUCCESS" >> build_env.properties'并归档该文件。测试失败则 job 状态为 FAILURE -
方式 B:在当前 job 的 Post-build Actions 中调用远程测试服务
用Publish Over SSH或HTTP Request Plugin向预发布环境发起健康检查或自动化测试 API;根据 HTTP 状态码或响应体判断是否通过(需脚本解析)
三、配置 Promotion Process 实现“自动升迁”
进入主构建 job 配置页 → 找到 “Promoted Builds” 区域 → 点击 “Add Promotion Process”:
-
Trigger 选
When a downstream project is built successfully,填入你上面建的测试 job 名(如test-staging)——这是自动升迁的关键,Jenkins 会监听该 job 成功完成即触发 promotion -
Conditions 可留空(默认任意成功即升迁),或加条件如
Only when parameter matches,匹配ENV=staging防止误触发 -
Actions 里添加你要执行的发布动作:
– 用Execute shell调用部署脚本(如sh /opt/scripts/deploy-to-prod.sh ${PROMOTED_BUILD_NUMBER})
– 或用Publish Over SSH将归档产物复制到生产服务器并重启服务
– 若用 Docker,可在此步运行docker pull your-registry/app:${PROMOTED_BUILD_NUMBER} && docker-compose up -d - 注意:脚本中优先使用
${PROMOTED_BUILD_NUMBER}(升迁时对应的构建号),而非${BUILD_NUMBER}(promotion job 自身编号)
四、补充建议
实际运行中容易忽略的点:
- 确保 promotion job 有权限访问归档产物——如果主 job 关闭了 artifact 拷贝,下游 promotion 就读不到 jar;可在主 job 的 “Archive the artifacts” 中明确路径,或在 promotion action 中用
Copy artifacts from another project插件显式拉取 - 避免循环触发:测试 job 不要反过来监听 promotion job,否则形成闭环
- 加人工确认环节?若需审批,把 trigger 改为
Only when manually approved,再配合 Email/DingTalk 通知负责人 - 日志可查:每次 promotion 会在构建历史里生成一条 Promotion 记录,点击可查看执行详情和输出日志











