基础设施、云与 DevOps · 综合
自动化的构建与部署流水线
一句话: 每次合并都应触发同一串动作:构建、测试、安全检查、部署——中间不能有任何一步手工操作。
流水线的各个阶段
代码风格与类型检查、单元测试、构建、在构建产物上跑集成测试、依赖扫描,然后部署到测试环境。部署到生产——自动或者一键,取决于你的成熟度。
能站得住的规则
流水线必须快。超过十分钟,人们就开始绕过它。拆成一个总是运行的快速阶段和一个夜间运行的重型阶段。
被测试过的那个镜像,就是被部署的那个镜像。为生产重新构建一次,会抵消掉测试的价值。
流水线失败就停下一切。如果你已经习惯了红色的测试,那你有的不是流水线,是装饰品。
密钥与发布
密钥来自托管的密钥存储,而不是配置文件。每次构建都获得一个版本号,并且这个版本号也显示在应用里——好让你一秒钟就知道现在跑的是什么。
深入一层
加一道自动质量门:测试覆盖率不能下降、打包体积不能超出预算、严重漏洞会阻止合并。自动的门不涉及个人,也不会引发争论——规则对所有人都一样,也不取决于是谁在评审。