配置gitlab通过sonar扫描结果是否同意merge request
本文主要介绍gitlab发起合并请求时,通过jenkins触发sonarqube对gitlab项目进行扫描,之后将扫描结果返回到merge request,如果扫描成功则自动同意合并请求,如果扫描不成功则强制关闭合并请求。
环境搭建这里不过多赘述,排坑教程我的博客里也有,各位看官自便。
sonar配置
在soanr中 配置——网络调用之后创建,名称随便填,URL填你的 jenkins网址/soanrqube-webhook/
创建完成就是这样,第一次创建最后信息那里不会显示东西
jenkins配置
jenkins要安装 Sonar Quality Gates 插件
在 系统管理——系统设置 中设置插件,各项设置的含义都很明显,不多说
之后配置项目
新建一个maven项目,之后做如下配置根据需要设置构建触发器,我这里只勾选了当发起merge request时触发jenkins构建。这里的url和下面生成的token要添加到gitlab的webhook里
我们在构建这里选择了execute sonarqube scanner选项。gitlab会在发往jenkins的hook中会发送一些变量供我们在jenkins中使用,大家可以参考:https://github.com/jenkinsci/gitlab-plugin#add-a-note-to-merge-requests,完整的变量图我放在最后。
gitlab配置
首先要确定gitlab工程里这里的设置是开启的
创建webhook至此设置完毕,项目pom文件设置和maven设置这里就不多说了,我的其他文章中有讲。
执行起来的效果就是,当gitlab发起合并请求时,触发jenkins构建,jenkins触发sonar扫描代码,之后把扫描的结果返回到gitlab。sonar的扫描结果。因为我的代码有不符合规范的地方,所以上面jenkins构建的状态是失败的。
gitlab上返回的结果
完整的变量图:
参考文章:http://mini.eastday.com/a/190913032104233.html