手动门是干什么的
把上生产、删数据等敏感动作设为手动触发或需审批:自动化负责准备,由人按下最后一步。三种常见形态:作业级手动(GitLab 的 when: manual)、环境级审批(GitHub environment 配置必需审批人)、流程暂停确认(Jenkins 的 input 步骤)。要理解语义差异:GitLab 手动作业默认不阻塞流水线,不执行也视为成功;需要卡住后续阶段时配置 allow_failure: false。
基本信息
| GitLab | when: manual;阻塞语义配 allow_failure: false |
|---|---|
| GitHub | environment 配必需审批人,批准后才进入该环境作业 |
| Jenkins | input 步骤暂停等待确认 |
| 审批要点 | 审批人能看到变更内容与验证结果 |
| 权限边界 | 审批人与提交人分离,避免自己批自己 |
典型使用场景
- 上生产门:验证与预发都自动,生产部署保留人工确认。
- 危险操作:删库、清理数据、批量修复任务前加确认步骤。
- 发布窗口:等业务通知后再放行,而不是流水线跑完立即上线。
- 合规审计:谁在何时批准了哪个版本,有记录可查。
- 外部依赖确认:等第三方系统就绪或对端升级完成后继续。
- 审批演练:定期走一次完整审批流,验证通知与权限没有失效。
GitLab 手动部署
GitLab 手动部署
deploy-prod:
stage: deploy
when: manual
allow_failure: false # 不点就不算成功,卡住流水线
script: ./ci/deploy.sh prodJenkins input
Jenkins input
stage('Approve') {
steps { input '确认发布到生产?' }
}审批人应能看到变更内容与验证结果(合并请求链接、测试报告),避免盲批。
手动作业默认不阻塞流水线:不配置阻塞语义时,未执行的手动步骤不会挡住后续阶段,敏感门要保持警惕。
审批不是慢的同义词:把审批收敛到上生产与危险操作两个点,其余环节全自动,流程整体仍然高效。