createprocess失败代码2_DevOPS | 基于sonarqube、jenkins和gitlab的持续集成代码检查

在持续集成过程中,针对代码的静态检查一般有两个时间点:一是提交代码的时候、二是提交merge request的时候,如果代码检查不通过,则可以直接拒绝此次代码提交或者合并。下面我们介绍下在常见的devops工具链sonarqube、jenkins和gitlab下,实现在merge request提交的时候进行代码检查的方法。

jenkins端的配置

首先,我们在jenkins中安装如下几个插件:

  • gitlab plugin: https://wiki.jenkins-ci.org/display/JENKINS/GitLab+Plugin。此插件的主要作用是与gitlab集成,可以在代码提交、merge request创建等情况下触发jenkins进行构建,简单讲,就是在gitlab的webhook下触发jenkins构建
  • sonarqube scanner for jenkins: http://redirect.sonarsource.com/plugins/jenkins.html。此插件的作用是调用sonar scanner进行代码扫描,并可以将jenkins构建的结果以comments的形式添加到merge request中。从而方便后续code reviewer的查看。
  • sonar quality gates plugins: https://github.com/jenkinsci/sonar-quality-gates-plugin/blob/master/README.md。此插件的作用是读取一个sonar project的quality gates结果,如果是失败,则更改jenkins 构建的结果为失败或者不稳定。

安装完成之后,我们需要在gitlab端创建一个token供jenkins使用:登录gitlab之后,点击个人头像那个地方,在settings页的access token创建token,注意至少勾选api那的复选框

53088f89-0a86-4d3e-8506-b2a0d0ffb4ab

另外我们需要在sonarqbue端创建一个token供jenkins使用:登录sonarqube后,点击个人头像那个地方,在My Account页的tokens创建token。

a8214db1-1794-45cf-b3a7-7dc36683b945

然后我们进入jenkins的系统管理-系统设置,找到gitlab的配置块:

c13039c9-a1f5-4687-8b55-514a89820864

找到quality gates - sonarqube的配置块:

745a3d98-c3c0-4486-bfd9-bbb21b869eb0

找到sonarqube server的配置块:

975eacf4-fe98-437f-bdb0-3e177f79c73a

接下来,我们先建一个自由类型的项目,关键的配置如下:

367012c1-86cc-48fc-9629-5c104f31bb1e

然后点击Advanced按钮,为本jenkins的构建生成一个token:

8a043769-d226-48ea-940d-46ce02b9c943

在构建触发器的地方,我们只勾选Opened Merge requests,也就是merge request创建的时候进行构建,大家注意截图中有个webhook的url,该url后续需要填入到gitlab中。

fb7cf524-2573-4b6a-a44d-61b384b925fe

在构建这个地方,我们选择execute sonarqube scanner选项。gitlab在发往jenkins的hook中会发送一些变量供我们在jenkins中使用,大家可以参考:https://github.com/jenkinsci/gitlab-plugin#add-a-note-to-merge-requests,如下是个完整变量的截图:

435f0df9-4f94-429d-8867-c143aaa4086a

在构建后操作,我们增加了2项:

b245f862-bd60-45ed-be6f-2e1e0b353182

大家注意下:第一个是Quality Gates Sonarqube Plugin,这个读取代码扫描后的结果,如果分析失败也就是没有通过sonar的质量门,则此次构建的结果为FAILED。第二个是把此次构建的结果以note的形式添加到gitlab的merge request中。

到此,jenkins的配置完成。

gitlab端配置

我们进入gitlab的项目后,点击settings-integration,也就是给项目添加一个webhook,hook的地址就是上面构建中出现的url,token是点击advanced后创建的token,触发器我们只选择Merge request events好了,配置如下:

c076cb97-7d54-47c9-a462-b386ae3d4258

验证

下面我们在gitlab的项目里面,创建一个merge request,之后,就可以在jenkins端看到触发了sonarqube的代码扫描,并在扫描完成之后,根据是否通过sonar的quality gates,把成功或者失败的信息添加到了merge requests的note中:

e14c9b10-2944-4b62-898f-e3243c9bd8ae
29e2bc22-8b8e-43b7-aec3-fbe86c5c2fe4

总结

文章介绍使用jenkins和sonarqube做基于gitlab的merge request的代码静态检查方法,实用性高。文章介绍的集成方法,除可用于代码检查外,同样可以用于与gitlab集成的自动化测试、性能测试等,建议大家掌握。

另外一个扩展点,就是如果jenkins的构建不过,直接强制关闭gitlab的merge request,而不仅仅是添加一个note。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值