DevOps流水线中的质量门禁落地里的真实取舍
2026-11-12 11:31:30
作者:
fawen
上周跟一个做了八年DevOps架构的老大哥在新街口的咖啡店碰了面,他刚坐下就灌了半杯冰美式,说团队花三个月搭的流水线,现在成了全公司最招骂的系统。为啥?质量门禁设得太死。
门禁不是越多越好
他之前的做法是从代码提交开始,每走一步就卡一次。提交代码要过静态扫描,合并分支要过单元测试覆盖率,打包前要过依赖漏洞扫描,部署测试环境要过接口自动化通过率,甚至上线前还要卡一次人工审批的通过率。结果呢?开发同学为了快点过门禁,写一堆没实际断言的单元测试凑覆盖率,漏洞扫描报的中危问题直接点忽略,接口自动化跑不过就改测试用例的预期值。
DevOps流水线质量门禁卡点节点示意图
这事没那么玄。很多团队刚上DevOps的时候,总觉得把能想到的检查项全堆进门禁,就是做好质量管控了。错。你把流水线堵得越死,大家想的就不是怎么提高质量,而是怎么绕开规则——毕竟没人愿意为了走个流程,把半天的时间耗在等门禁扫描结果上。质量门禁的核心是筛掉真正可能出生产事故的风险,不是给所有人添堵。我之前见过更夸张的,门禁里加了代码提交的字数限制,说单次提交超过500行就打回,结果开发直接把一个功能拆成十几次提交,每次改个变量名就提交一次,流水线上的记录看得人眼花缭乱,找个问题根因得翻半小时提交历史。
阈值定错比没门禁还坑
老大哥说他们之前踩过最大的坑,是把单元测试覆盖率的门禁阈值定成了80%。刚定的时候大家都觉得挺合理,行业通用标准嘛。结果呢?老系统里一堆十年前写的老代码,根本没几个测试用例,为了凑80%的覆盖率,团队抽了两个开发花了两周时间,专门给那些已经跑了好几年没出过问题的老逻辑写测试用例。写出来的用例连边界场景都没覆盖,就是为了凑数。最后这两周的人力,完全是无效投入。
说真的,当时我听着都觉得亏。麻烦在于,很多团队的门禁阈值都是抄来的。抄大厂的公开标准,抄网上的最佳实践,根本不看自己的业务是什么阶段。要是你是做核心交易系统的,那覆盖率卡80%甚至90%都没问题,毕竟出一次故障的损失就够你写半年测试用例的。但你要是个刚起步的创业团队,产品还在快速迭代找方向,今天改个需求明天换个功能,你卡这么高的阈值,开发连写新功能的时间都没有,全花在补测试上了。
DevOps质量门禁阈值配置界面实拍图
我之前接触过一个做内部工具的小团队,他们的门禁阈值定得就很有意思。单元测试覆盖率只卡30%,但是对涉及权限校验的核心模块,单独把覆盖率要求提到90%,只要这部分的测试没过,直接打回。静态扫描的漏洞等级,只卡高危和严重的中危,低危的直接忽略。上线的人工审批,只有涉及资金、用户数据的变更需要走,普通的前端页面调整直接自动放行。就这么一套规则,他们的流水线从来没卡过开发的迭代节奏,上线后的故障数反而比之前堆了一堆门禁的时候少了一半。
门禁要跟着业务动态调
很多团队把质量门禁的规则定下来之后,就再也没动过。这才是最大的问题。你想啊,去年你的团队做的还是内部管理系统,今年突然接了个面向C端的用户产品,你还沿用之前那套松垮的门禁规则,不出问题才怪。
说白了,没有放之四海而皆准的门禁规则。老大哥他们团队后来把之前那套全量卡点的规则全拆了。现在的门禁分了三个等级:核心生产环境的部署,卡全量检查,静态扫描、单元测试、接口自动化、安全扫描一个不落,还要加一次运维的人工复核;预发环境的部署,只卡高危漏洞和核心模块的测试覆盖率;日常开发环境的构建,除了代码语法错误之外,啥检查都不做,提交了直接打包部署。
调整完之后,开发的投诉量直接降了七成。大家不用再为了凑数写没用的测试用例,反而愿意主动给核心模块补测试了——毕竟这部分的检查是真的严格,要是自己写的逻辑出了问题,过不了门禁,也省得后面上线了被用户骂。
上周跟老大哥再聊的时候,他说现在流水线的门禁,已经成了大家真正信得过的防线,而不是之前那种为了应付检查做的表面功夫。毕竟谁都知道,门禁卡的不是开发的提交速度,是那些可能捅大篓子的风险。别把门禁做成流水线的堵点,这事说起来简单,真落地的时候,得对着自己团队的业务一点点磨,抄来的规则,永远不好用。
免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:
DevOps流水线中的质量门禁落地里的真实取舍
文章链接:https://www.itcdj.com/news/751.html