DevOps流水线中的质量门禁 别做流水线的橡皮图章

上周在南京软件大道蹲了一下午,蹭了两杯便利店的冰美式,跟三个不同团队的开发、运维、测试凑一块聊,十句话里有八句在骂质量门禁。有的说卡了四十分钟编译不过,翻日志才发现是三个月前的老依赖配置没更新,白等;有的说门禁形同虚设,负责人点个跳过按钮就过,线上出了支付故障才翻出来,当时对应的单元测试覆盖率刚到3%,连个像样的用例都没有。

门禁从来不是为了卡人

很多人一提DevOps流水线中的质量门禁,第一反应就是流水线里专门给开发添堵的卡点。这事真没那么玄。最早琢磨出这套机制的人,其实就是被线上故障搞怕了——以前没有门禁的时候,开发写完代码点个提交,就扔给测试等三天,测出来一堆低级错误,什么变量名写错了、接口返回格式不对、甚至硬编码了本地的测试地址,来回折腾的时间比写代码还长。后来大家想,不如把这些本来就要做的检查,提前固化成流水线自动跑的步骤,代码一提交就自动跑,不用等人工挨个查。质量门禁的核心从来不是“卡”,是把分散在各个角色手里的重复检查动作,统一放到流水线上自动触发,减少不必要的人工等待。你想啊,以前要等测试花半天跑的lint检查,现在提交代码十秒钟就出结果,发现问题当场改,不就省时间了吗。
DevOps流水线质量门禁卡点流程图
DevOps流水线质量门禁卡点流程图
当然,也有搞的特别拧巴的团队。比如我之前遇到一个做企业服务的团队,为了“把质量拉满”,光流水线的门禁就堆了十九个卡点:代码风格扫描、第三方组件漏洞扫描、单元测试覆盖率、接口集成测试通过率、安全敏感词扫描、甚至还有更新产品文档的检查。结果每次提交代码,要等五十分钟才能跑完所有门禁,开发嫌慢,干脆在流水线后台加了个全局开关,谁都能点“跳过所有门禁”,连个审批记录都不留。你说这图啥?花了几个月搭的流水线,最后跟没有门禁一样。

踩过的坑比跑过的流水线还多

跟一线团队聊多了就会发现,大家对门禁的吐槽,十有八九不是门禁本身的问题,是设门禁的人没动脑子。第一个最常见的坑,就是把所有能找到的规则全往上堆,完全不考虑团队的实际节奏。刚才说的那个十九个卡点的团队,就是典型的——他们照搬了大厂的门禁配置,却没考虑自己团队只有八个人,代码库还不到十万行,根本不需要那么多层的检查。规则堆的越多,大家越想绕开,最后门禁就成了贴在墙上的纸老虎。 第二个坑更离谱,就是门禁的规则从上线那天起就没更新过。比如有的团队刚搭流水线的时候,代码库小,人也少,定的单元测试覆盖率阈值是60%。过了两年,代码库翻了四倍,新写的核心模块覆盖率早就到85%了,老的边缘模块覆盖率只有15%,门禁还是卡整体60%的线。结果开发哪怕新写的代码全补了测试,只要老模块拉低了整体分数,就过不了门禁。遇到这种情况,大家要么临时改几个测试用例凑数,要么找运维直接把阈值往下调,一来二去,谁还把门禁当回事?
代码扫描质量门禁阈值配置界面
代码扫描质量门禁阈值配置界面
那门禁到底该怎么设?说实话,没有什么放之四海而皆准的标准答案。麻烦在于,每个团队的业务场景不一样,能接受的风险程度也不一样。做金融交易系统的,涉及资金的模块,门禁的漏洞扫描等级就得拉到最高,哪怕流水线多跑二十分钟也没关系,真出个资损漏洞,损失可不是几个加班能补回来的。做内部用的运营小工具,只要核心流程的测试过了,什么代码风格、文档更新检查,完全可以挪到开发本地提交前的pre-commit钩子上跑,没必要占流水线的宝贵时间。你要追求快,就得适当放低非核心环节的检查要求;你要追求稳,就得接受流水线跑的慢一点。没有完美的配置,只有适合自己团队的取舍。

门禁要跟得上团队的变化

很多团队搭完流水线就把门禁扔在一边,再也不管了。但团队是会变的啊。去年团队只有五个人,大家都是写了三五年的老开发,代码规范摸的门清,门禁松一点没关系;今年一口气招了二十个刚毕业的新人,连公司的代码规范都没看全,你还把门禁放的跟以前一样松,线上出问题是早晚的事。 我去年接触过一个做电商的团队,大促前一个月特意调整了门禁规则:把所有跟支付、优惠券相关的代码的测试覆盖率要求从60%提到80%,把第三方组件的漏洞扫描等级从“中危以上阻断”提到“低危以上提示”。当时开发天天在群里吐槽,说门禁卡的慢,耽误提交进度。结果大促当天,真的靠门禁拦了三个可能导致资损的漏洞——要是当时没调整规则,这三个漏洞流到线上,那损失可就大了。 还有个很多人容易忽略的点,就是门禁的跳过权限不能随便开。我见过太多团队,门禁只要是个开发就能点跳过,连个审批都没有。那设门禁干嘛?真正有效的门禁,跳过操作是要全留痕的:谁跳的、为什么跳、跳了之后会影响什么,都要记录在案,出了问题能顺着记录找到人。不是说不能跳,遇到紧急的热修复、线上的突发故障,该跳就跳,效率要紧,但不能跳的悄无声息,最后出了问题谁都不认账。 我那天在软件大道聊到傍晚,大家收工去吃鸭血粉丝汤的时候,有个开发说,其实我们真的不反感门禁。反感的是那种完全不懂业务、拍脑袋堆出来的规则,卡了你还不知道为什么卡。有的团队门禁设的就很舒服:提交代码自动跑核心测试,过了就自动部署到预发布环境,连人工检查都省了,大家提交代码反而更积极。说白了,质量门禁从来不是流水线的对立面,是帮大家少加班、少背锅的工具而已。
免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:DevOps流水线中的质量门禁 别做流水线的橡皮图章
文章链接:https://www.itcdj.com/it/212.html