出了事追不到谁发的版

凌晨线上崩了,赶紧回滚止血。但天亮复盘时,发现一个尴尬的问题:谁发的这一版?改了哪些代码?在哪一步发上去的?——流水线跑过就跑过了,日志没人留,制品和代码对不上,根本查不清。这就是流水线没做审计的后果。

前面讲 CI/CD 流水线时重点在"怎么自动化发版",这一篇反过来问:发完之后,每一步能不能被追溯、被审查、被复盘。这在有合规要求的团队尤其重要。

自动化让发版变快,审计让发版可控。快和控缺一不可。
本文核心知识点
  • 制品溯源每个上线的包能追到具体代码提交。
  • 审批留痕谁批的、谁发的,都有记录。
  • 环境隔离测试环境别和生产混。
  • 权限最小化只有必要的人能动生产。
DevOps 流水线审计配图:横向传送带上依次排开齿轮、检查对勾、盾牌、锁等方块、右侧一个成品箱子的蓝色扁平科技插画
每一个上线的包,都能顺着流水线倒查回它的代码。

制品溯源:每个包都能追到代码

最基本的审计要求是:生产上跑着的这个制品,能说清它是哪一段代码编译出来的。做法是给每个制品打上唯一标识——把 git 的提交编号写进制品里:

制品溯源的关键:
- 构建时,把当前 git commit 编号写进镜像/包
- 生产上查到版本号,立刻对应到具体代码提交
- 这样出问题能精确知道改了什么

没有这个标记,版本号就是个"v1.2.3",谁也不知道它里面到底装了哪次提交的代码。加个 commit 标记,溯源就通了。

审批留痕:谁点的发布

生产环境的发布不能谁想发就发。关键是每次发布都留下记录:谁发起、谁审批、什么时候发的、发的哪个版本。流水线工具一般支持在发生产那一步加一个审批卡点:

发布审批卡点:
- 测试环境发布:自动,无需审批
- 生产环境发布:需要人工点击批准
- 批准人、时间、备注都记入流水日志

这样事后复盘,"这版是谁批的、为什么批"都查得到。出了事不会变成一笔糊涂账。

流水线日志:能回放每一步

流水线每一步的日志要完整保留下来:构建、测试、部署,每一步跑了什么、成功还是失败、耗时多久。出了问题能回放当时这一步到底发生了什么,而不是只能猜。

日志别只留几天就清掉——至少保留到能覆盖一次完整的复盘周期。很多团队流水线日志默认只存一周,等真要查的时候早就没了。