持续集成与持续交付

Posted by Shi Hai's Blog on October 6, 2024

CI/CD关键点

错误的累计性

错误越多,删除每个错误就越困难。部分原因是我们遇到了交错的错误,其中故障表现实际是多个故障叠加的结果,这使得更难找到每个故障。 这也是心理上的影响,当错误很多时,人们就没有精力去寻找和消除错误。

快速反馈

频繁部署很有价值,因为它使我们的用户能够更快地获得新功能,更快地对这些功能提供反馈,并且在开发周期中通常会变得更加协作。 这有助于打破客户和开发之间的障碍,这些障碍是成功软件开发的最大障碍。

立即修复

有些团队倾向于使用预测试、门禁提交来消除破坏主线的所有风险。以便推送到主线进行集成的提交不会立即进入主线。 它们可能会被放置在另一个分支上,直到构建完成,并且只有在绿色构建后才会迁移到主线。 虽然这种技术可以避免破坏主线的任何危险,但高效的团队应该很少看到红色主线,而且在少数情况下,它的可见性会鼓励人们学习如何避免它。

XaC

X是指的所有要素,也包含质量要素。流水线会检查所有合并到主线分支的提交内容经过代码检视,未经检视的提交内容禁止发布部署。

业内实践

AWS

流水线能力灵活能力强,可以通过pipeline action进行水平扩展,原子工具的手动执行和api能力配套,可以通过流水线进行关联和集成触发执行,但规范性偏弱,每个服务需要对本服务的SLA负责。
Pipeline聚焦于顶层的编排调度,Apollo负责服务部署,SWF聚焦于底层的复杂场景的分批运维操作。
所有写操作都需要可审计,不可审计的变更工具无法上线,所有写操作都需要关联变更单或者事件单,确保可审计及可追溯,读操作没有进行风险控制。
有些写的运维操作也会通过堡垒机进行执行,会对运维操作风险进行评估,高风险需要两人进行操作,低风险就一人进行操作。

参考文档