在应用日常开发的过程中,不论是在测试、开发联调,还是实际构建发布的时候,我们都需要一定的指标去衡量技术产物的质量,从而判断技术产物是否符合质量标准,是否能够继续发布投产,如果不符合投产标准则拦截发布。从发布过程的角度,由于一般发布过程会收口到特定的CI流水线上,因此在做这类能力的时候,通常是采用开发一个特殊的质量红线原子的方案,集成到CI流水线当中,实现发布准入准出的原子能力。
准入准出质量红线能力的开发者,通常是DevOps中台,中台提供原子能力以及配置化的能力,用户可以根据自己的业务去配置相应的指标产出与拦截规则,也可以直接套用特定的模板来快速实现准入准出的效果。本文就来讨论,这类能力要开发出来,在技术实现上,需要做怎样的考虑跟设计。
首先,针对真实业务,要用到准入准出质量红线的话,可能会考虑以下场景:
- 日常开发提测,在代码提交MR时,通过MR的hook触发对最新代码的规范检查
- 代码检查需要关心一系列指标,包括:代码缺陷、代码安全、编码规范、重复代码、复杂度
- 不符合指标的情况下,显示被质量红线拦截,MR被阻止
- 版本转测时,保证代码质量与单元测试代码覆盖率符合要求
- 不符合指标的情况下,终止归档构件
- 用户采用脚本等方式,自定义发布红线指标与生成过程,不符合指标的,阻止发布流程
因此,从技术实现角度上,这里可以拆解成几个维度: