CI/CD跑通的是团队的信任链路

去年深秋在徐庄软件园等冰美式,撞见个穿洗得发白的格子衫的小伙子攥着Dell笔记本蹲在路牙子上,指节捏得发白,屏幕上还亮着生产环境的报错日志——刚上线的会员折扣接口崩了,他凌晨三点从家里爬起来远程回滚,到公司才发现,昨天前端合并的那个开发分支里,藏了个没删掉的本地调试用的硬编码参数。

真的。这种事儿,在南京的各个软件园里,每周都要上演好几回。

别再把CI/CD当成运维的专属KPI

很多团队第一次碰CI/CD,都是运维牵头拍板的——“我们要搞数字化转型,要上流水线,要实现自动化部署”。话说得漂亮,落地全是坑。

之前见过最离谱的一个团队,运维花了两周搭完GitLab CI,上来就给所有分支加了12个强制检查项:从代码风格规范到单元测试覆盖率,甚至连提交信息的字数都卡得死死的,跑不过就不让合并。

结果呢?

开发为了过检查,直接把测试断言全注释了,等流水线跑完合并成功,再把代码改回来。花了大价钱搭的流水线,最后成了全团队集体钻空子的靶子。

你说这叫什么事儿?

开发在GitLab流水线界面临时注释测试用例的实拍
开发在GitLab流水线界面临时注释测试用例的实拍

说实话,CI/CD从一开始就不是给运维凑考核数据的工具。它本质是帮团队把“我觉得我写的代码没问题”这种口头承诺,变成看得见、跑得出结果的客观验证。你要是从一开始就把它当成约束人的枷锁,没人会真的买账。

流水线的第一优先级不是快,是把藏着的问题提前揪出来

刚才提到的那个蹲路边的小伙子,他们团队一开始搭流水线的时候,总想着要“快”——从代码提交到生产部署要压到5分钟以内,要支持一键回滚,要搞全链路灰度。

我们去帮他们梳理的时候,直接把那个“5分钟上生产”的目标给砍了。

为啥?

他们团队当时最痛的点根本不是部署慢,是每次合代码都要靠运气。后端写的接口字段名改了,前端不知道;前端加了个新的依赖,打包的时候没拉到对应的版本;甚至有人把本地的调试密钥直接提交到了公开仓库。这些问题,全靠上线前的人工check,漏一个就是生产事故。谁懂啊,之前团队的测试同学跟我抱怨,说她上周为了等开发给的测试包,在工位上坐了俩小时,最后发现开发早就忘了这事儿,跑去吃火锅了。

我们给他们改的第一版流水线,压根没碰生产环境的部署环节。就做了三件事:

第一,代码一提交,10秒内跑完静态代码扫描,把硬编码的密钥、不规范的变量名直接揪出来,@对应的提交人,连带着他上次漏扫的历史记录一起甩到企业微信群;

第二,合到主分支的代码,自动跑核心链路的单元测试,测试覆盖率低于60%的直接打回,不用等测试同学找过来扯皮;

第三,所有扫描和测试结果,直接生成可视化的看板,谁的提交出了问题,全团队都能看见。

就这么简单的三步,跑了第一周,团队的无效合并请求从每天27个降到了6个。之前大家合代码根本不看本地能不能跑,反正合了再说,现在知道提交10秒就有结果,反而会在本地先把代码跑一遍。

谁都没想到,原来大家不是不想好好写代码,是之前根本没有即时的反馈。你写完代码要等两个小时才出测试结果,谁还记得自己当时写了啥?即时反馈到位了,根本不用你催。

企业微信接收CI流水线问题提醒的聊天界面截图
企业微信接收CI流水线问题提醒的聊天界面截图

别追求一步到位的完美流水线

别追求一步到位的完美流水线
别追求一步到位的完美流水线

见过太多团队,照着网上的“大厂CI/CD最佳实践”抄作业,上来就要搞8个环节的审批流,要接监控告警,要搞自动化性能测试,折腾了三个月,最后流水线成了摆设。

那个做智慧园区的客户就是这样。之前他们照着Jenkins的教程搭了一套流水线,从代码提交到生产部署要经过代码检查、单元测试、安全扫描、测试环境部署、人工验收、预发验证、生产审批、流量切换整整8个环节,每个环节还要不同角色的人点确认。

结果呢?

开发嫌麻烦,宁愿本地打包手动上传到服务器,也不愿意走流水线。运维每次还要帮大家排查手动上传的版本对不对,比之前没流水线的时候还累。

后来他们把这套花了三个月搭的流水线全拆了。

第一步,先只加最基础的代码检查环节,过了就给开发者发个几分钱的企业微信小红包——要是检查不通过,红包就自动转给当时在群里聊天最活跃的同事。就这么个有点傻的规则,第一周大家的代码提交规范率直接从32%升到了91%。

第二步,等大家连续用了一个月,习惯了提交之后看流水线结果,再加测试环境的自动部署。测试同学再也不用追着开发要安装包,开发也不用每次花半小时给测试同学讲“你要拉哪个分支”。

第三步,又过了两个月,才慢慢加上生产环境的自动部署,而且一开始特意保留了手动确认的按钮,让大家心里有底。

现在他们的流水线跑了快一年,从来没出过之前那种凌晨爬起来回滚的事故。上周那个小伙子跟我说,他上周六还抽时间去紫金山骑了半程,换以前,周六能不能安心出门都要看前一天上线的代码给不给面子。

你看,哪有什么完美的流水线啊。

你要是一开始就给开发套上一堆条条框框,人家绕着走的本事,比你写自动化脚本的本事大得多。

真正好用的CI/CD,从来不是照着大厂的模板抄出来的。它就是慢慢攒出来的,今天解决一个“测试要安装包”的小麻烦,明天解决一个“密钥提交到仓库”的小漏洞,攒得多了,大家自然就愿意用了。

它从来不是什么高大上的技术概念。

就是帮你把那些没必要熬的夜,省下来而已。

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:CI/CD跑通的是团队的信任链路
文章链接:https://www.itcdj.com/it/257.html