一、背景
在之前的文章中,我们已经描述了jenkins和sonarqube是如何集成起来的,今天我们在该篇文章中描述下:如何使用gerrit+jenkins+sonar进行代码质量管控.主要是利用sonarqube分析代码的能力来管控.
一般流程是开发者只需要提交代码,然后会自动触发 CI/CD,根据编译结果来判断代码是否能被merge进去.而代码的质量却无法被管控到. 那么我们如何来进行管控呢?总体上是采用以下的流程:gerrit提交代码-->触发jenkins job--->编译后上传sonar报告-->shell脚本调用sonar的API,得到关键的质量数据后判断是否满足条件--->jenkins将执行结果返回给gerrit-->根据jenkins的返回结果判断是否merge代码
二、具体实现
在这个简单的流程中,最基本的是gerrit和jenkins的集成以及如何上传sonarqube报告. 当然本文不是讲解该如何集成,本文主要是讲解: shell脚本应该如何写.
整个shell脚本大概可以分为以下三步:
- 判断sonar报告已经上传成功,保证是这次提交对应的sonar报告
- curl命令去调用api,得到关键质量数据
- 根据质量数据返回不同的值,返回1表示质量不过关,jenkins job也会失败,同时jenkins会给gerrit返回-1操作;返回0表示质量过关,jenkins job会是成功状态,jenkins 会给gerrit返回+1操作
后面考虑将第一