四五年多前,我看到ThoughWorks的一篇文章提到“CI theatre「持续集成剧场」”,专门还写了一篇文章做些思考。还是当时太年轻,见识太少,若干年后被我遇到了。
“CI 剧场描述了在实践持续集成 (CI) 时产生的幻觉,但实际上并没有在实践它。”
常见的故障模式包括:
流水线一直在失败,无人响应,有的设置了定时任务,在相当长的周期内(超过几个月时间),一直是失败状态。这种情况一般可能如下几个原因:
老实说,很难想象这种行为。回想我之前待过的团队(如下图所示),虽然没有这种搞笑发射器,但是一封"break build"邮件已经让研发同学”闻风丧胆“。
对于每天都会持续集成的团队(超过200人的跨地域协作),一个月里超过3次break build, 已经算是很严重的事故了。
收到"break build"邮件,开发同学会说一声“sorry”, 立刻停下手头工作,紧急修复。如果修复时长超过2个小时甚至更长,一般都会要求“rollback”。如果超过1天,一般测试就会过来问了,大家都在等着。如果超过2天,可能事情就会上升到更高级别总监角色。
另外,针对于"break build",我们会进行分析,什么原因导致的最多?是在哪个环节出错的最多?经常出错的地方,就会公示给大家注意。
大家对于自己的代码质量是心生敬畏的,因为会影响别人的工作,以及整个团队的发布节奏。
现实中,有些开发人员总是喜欢炫技,动不动就API批量创建流水线,结果上千个流水线。遇到这种团队,也只能呵呵,你们牛逼。
如果你也遇到了,可以在下面留言分享你的经历。
这种情况可能比较常见,特别是使用了现成的CI/CD平台的开发团队,基本以解决当前问题为主,能实现当前的构建编译/部署就可以。
不过,容易导致A创建一个用,B也创建另外一个,某天A走了,C继续开始创建新的。 结果,就是一堆流水线垃圾,纯纯的浪费。他们不明白什么是流水线的分层分级,不知道什么是抽象复用。
如果把IT研发流水线比做汽车生产线来看待,你见过哪个汽车生产企业没事就换生产线的?
这种常见于会要求做构建度量的组织,为了应付度量KPI, 写个“echo ‘hello-world’“
, 每天定时跑。所以,做效能度量的组织,记住“度量什么就会得到什么”。
上面这个比较极端,还有一种情况是确实在跑流水线,但是没有任何代码变更,做无效功。
军队的养兵是持续加强训练,我这里提的养兵是”圈养流水线“。
与上面提到的”空跑做无效功“不同,这个又是另外一个极端。前29天不跑,第30天跑一次,靠,挂了!
这样的团队,我就想问问,你要流水线干啥,这投入产出比太低了吧。
十几年前,老外已经告诉我们持续集成就是“产品的心脏”,你要随时监听它的跳动,它代表了产品的质量。
十几年后,AI浪潮席卷,大家都在提AI赋能,AI代码评审,AI写自动化用例,甚至有的AI分析需求等等。
可是,你的持续集成真的做好了吗?你的团队知道什么是快速反馈立即修复吗?
DevOps三部法中的反馈是核心环节,它通过监控工具快速发现问题,通过快速修复解决问题,并通过持续的反馈优化整个开发运维流程。这种快速、准确的反馈是DevOps成功的关键。 反馈的重要性
反馈的实现方式
反馈的优化
每个优秀的团队都会建立严格的团队集成纪律。
前期专职人员负责团队的流水线优化,通过团队流水线模板,让全部团队成员使用
针对经常失败的步骤重点关注,通过chat工具反馈给团队。团队负责人要时刻关注构建情况。
如果近期经常构建失败,说明近期的代码提交质量出现了下降趋势,需要引起关注。