人机交互与确认环节是将关键决策权保留在人手上的可控机制,聚焦高风险操作如生产环境部署、数据库变更、敏感凭证更新等,通过平台化审批方式提供上下文并确保闭环反馈。

批量部署自动化流程中的人机交互与确认环节,不是给自动化“踩刹车”,而是把关键决策权保留在人手上——尤其当操作涉及生产环境、数据库变更、权限升级或跨系统联动时。它要解决的不是“要不要自动化”,而是“在哪儿留一道可控的确认口”。
哪些环节必须设人工确认
确认不是越多越好,而是聚焦真正高风险、难回滚、影响面广的操作:
- 向生产环境推送新版本镜像或服务包前
- 执行数据库结构变更(如ALTER TABLE、DROP COLUMN)前
- 更新密钥、证书或OAuth配置等敏感凭证时
- 触发全量回滚或强制覆盖式部署时
- 多租户/多客户环境中的定向发布(例如只推给A集团,不推B集团)
确认方式要适配运行环境
CI/CD流水线跑在服务器上,不是本地终端,所以“弹窗”不可行,得靠平台能力或轻量命令行交互:
- GitHub Actions:用
environment: production+ 仓库 Settings 中开启“Require approval for deployments”,审批人可来自团队或指定角色 - GitLab CI:配合
protected environment和when: manual,审批动作在UI上点击Promote完成 - 自研CLI工具:集成
enquirer等库实现Confirm提示,需确保CI runner允许TTY交互(如GitHub Actions默认支持,Jenkins需开启“Allocate TTY”) - 企业级平台(如Argo CD、Spinnaker):内置Approval Stage,支持多角色会签、超时自动拒绝、审批理由必填
审批界面必须提供有效上下文
只问“确定吗?”等于没审。审批者需要一眼看清“我批准的是什么”:
- 本次变更范围:列出修改的文件、新增/删除的API、涉及的服务模块(可由git diff + 自定义解析脚本生成)
- 质量门禁结果:单元测试通过率、E2E成功率、Trivy扫描高危漏洞数、SonarQube技术债务评级
- 部署目标标识:Docker镜像SHA256、Git commit hash、构建时间戳、目标集群名称
- 影响说明:例如“将重启订单服务,预计中断≤45秒”“本次变更影响所有使用v2 API的客户端”
确认之后要有闭环反馈
审批不是终点,而是流程中的一个明确节点,后续行为必须可追踪、不可绕过:
- 批准后自动触发下游部署任务,禁止再手动干预执行步骤
- 拒绝或超时未响应,流水线状态标记为
cancelled或failed,并自动通知发起人和值班群 - 每次审批记录写入审计日志,包含审批人、时间、IP、审批理由(如有)、关联流水线ID
- 审批结果同步至CMDB或变更管理系统,作为ITIL变更单的电子签字凭证

















