配置gitlab通过sonar扫描结果是否同意merge request

本文主要介绍gitlab发起合并请求时,通过jenkins触发sonarqube对gitlab项目进行扫描,之后将扫描结果返回到merge request,如果扫描成功则自动同意合并请求,如果扫描不成功则强制关闭合并请求

环境搭建这里不过多赘述,排坑教程我的博客里也有,各位看官自便。

sonar配置

在soanr中 配置——网络调用
配置gitlab通过sonar扫描结果是否同意merge request之后创建,名称随便填,URL填你的 jenkins网址/soanrqube-webhook/
配置gitlab通过sonar扫描结果是否同意merge request
创建完成就是这样,第一次创建最后信息那里不会显示东西
配置gitlab通过sonar扫描结果是否同意merge request

jenkins配置

jenkins要安装 Sonar Quality Gates 插件
在 系统管理——系统设置 中设置插件,各项设置的含义都很明显,不多说

配置gitlab通过sonar扫描结果是否同意merge request之后配置项目
新建一个maven项目,之后做如下配置
配置gitlab通过sonar扫描结果是否同意merge request根据需要设置构建触发器,我这里只勾选了当发起merge request时触发jenkins构建。这里的url和下面生成的token要添加到gitlab的webhook里
配置gitlab通过sonar扫描结果是否同意merge request配置gitlab通过sonar扫描结果是否同意merge request配置gitlab通过sonar扫描结果是否同意merge request我们在构建这里选择了execute sonarqube scanner选项。gitlab会在发往jenkins的hook中会发送一些变量供我们在jenkins中使用,大家可以参考:https://github.com/jenkinsci/gitlab-plugin#add-a-note-to-merge-requests,完整的变量图我放在最后。
配置gitlab通过sonar扫描结果是否同意merge request

gitlab配置

首先要确定gitlab工程里这里的设置是开启的
配置gitlab通过sonar扫描结果是否同意merge request配置gitlab通过sonar扫描结果是否同意merge request
创建webhook
配置gitlab通过sonar扫描结果是否同意merge request至此设置完毕,项目pom文件设置和maven设置这里就不多说了,我的其他文章中有讲。
执行起来的效果就是,当gitlab发起合并请求时,触发jenkins构建,jenkins触发sonar扫描代码,之后把扫描的结果返回到gitlab。
配置gitlab通过sonar扫描结果是否同意merge requestsonar的扫描结果。因为我的代码有不符合规范的地方,所以上面jenkins构建的状态是失败的。
配置gitlab通过sonar扫描结果是否同意merge requestgitlab上返回的结果

配置gitlab通过sonar扫描结果是否同意merge request
完整的变量图:
配置gitlab通过sonar扫描结果是否同意merge request

参考文章:http://mini.eastday.com/a/190913032104233.html