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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409839.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[html] 你知道微信端的浏览器内核是什么吗?

[html] 你知道微信端的浏览器内核是什么吗? X5内核个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

用strtotime()和date()函数算出2019年9月的周日日期

strtotime---用于接收两个参数&#xff0c;第一个参数是格式化的日期数据如&#xff1a;date(Y-m-d),第二个参数有如7 day 函数版<?php $firstsunday strtotime(date(Y-m-01)); $thisy intval(date(m)); $diffdays0; $count 0; if (date(w,strtotime(date(Y-m-01)))!0) …

保存到本地_手把手教你将微信表情包保存到本地

筒子们晚上好&#xff01;微信不像QQ那样可以把微信包表情直接保存到本地&#xff0c;所以今天就来介绍两个把微信表情包保存到本地的方法&#xff01;(两种方法均需要用到电脑)方法一&#xff1a;使用微信公众号(不建议)工具&#xff1a;手机&#xff0c;电脑&#xff0c;微信…

redis集群 + 哨兵 + zookeeper_技术干货 | Redis的哨兵和集群

Redis全称REmote DIctionary Server&#xff0c;是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。它通常被称为数据结构服务器&#xff0c;因为值(value)可以是字符串(String), 哈希(…

[html] 移动端如何实现长按保存图片(图片上的二维码是动态的)?

[html] 移动端如何实现长按保存图片&#xff08;图片上的二维码是动态的&#xff09;&#xff1f; html -> canvas -> image -> a[download]html2canvas.js&#xff1a;可将 htmldom 转为 canvas 元素。传送门 canvasAPI&#xff1a;toDataUrl() 可将 canvas 转为 ba…

协作安装程序应用一例

所谓“协作安装程序”&#xff0c;在ddk文档里面称作co-installer&#xff0c;有人将它翻译成“共同安装程序”。但是&#xff0c; 从ddk文档对co-installer功能的描述来看&#xff0c;我个人觉得翻译成“协作安装程序”更恰当些。 ddk文档对co-installer的描述&#xff1a;A c…

foxitreadersdk 打开远程文件_一种最不为人知最简单最方便的用电脑操作手机上的文件...

(声明&#xff1a;此功能&#xff0c;只适用于安桌系统的手机)由于最近一年手机上的文件经常隔三差五地提示空间已满&#xff0c;我不得不经常痛心删除一些文件&#xff0c;或者将手机上的文件&#xff0c;移到电脑端。如果想通过QQ或者微信发送单个单个文件&#xff0c;总是不…

月球-I型,月份日历生成器----基于PHP7.3

生成月份周日的类<?php class mycalendar {function __construct($year,$mon){$this->nianyue$year.-.$mon.-.01;$this->firstdaystrtotime(date($this->nianyue));$this->m intval(date(m,$this->firstday));$this->wdaylistarray();$this->lday s…

python dict遍历_Python 容器(二):字典(Dict)

Python 容器(二)&#xff1a;字典(Dict)一、字典1、定义&#xff1a;Python的字典数据类型是基于hash散列算法实现的&#xff0c;采用键值对(key:value)的形式&#xff0c;根据key的值计算value的地址&#xff0c;具有非常快的查取和插入速度。2、特点&#xff1a;1&#xff09…

论得失。。。技术方向

得失&#xff0c;一直都是人们所在意的&#xff0c;一旦得那么久开开心心&#xff0c;一旦失。就闷闷不乐&#xff0c;其实不然&#xff0c;中国的词语博大精深。一句舍得。解开了万人的心声。舍得&#xff0c;舍得&#xff0c;没舍哪来得。其实做技术也是一样。往往你在这个领…

[html] 你有了解video的x5-video-player-type这个属性吗?它的作用是什么呢?

[html] 你有了解video的x5-video-player-type这个属性吗&#xff1f;它的作用是什么呢&#xff1f; 这个属性是限制微信的X5 内核的自动播放功能个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目…

路径级别

.. 上一级 ~/根目录转载于:https://www.cnblogs.com/maomiyouai/archive/2012/05/21/2511021.html

奥特曼传奇英雄存档丢了怎么找回_热血传奇:道士最帅武器—玄天

点击“传奇私服玩家群”加个关注☀ 欢迎传奇老司机&#xff01;在这里&#xff0c;分享最新传奇资讯&#xff0c;回忆当年的传奇年代。分享最热传奇手游&#xff0c;端游&#xff0c;找回昔日组队的热血时光。记得加个关注不迷路~☀ 微信公众号&#xff1a;diyisf777热血传奇中…

.Net Core下基于Emit的打造AOP

之前的基于DispatchProxy的AOP组件&#xff0c;实现了属性注入&#xff0c;但是这个依旧有很多限制 比如不支持构造器注入&#xff0c;继承DispatchProxy的子类必须是公开类 个人有点代码洁癖&#xff0c;不喜欢这种不能控制的方式&#xff0c;就学了几天Emit&#xff0c;参考了…

[html] iOS下页面如何启动加载时显示画面图片?如何设置大小?它有什么好处?

[html] iOS下页面如何启动加载时显示画面图片&#xff1f;如何设置大小&#xff1f;它有什么好处&#xff1f; <link rel"apple-touch-startup-image" href"start.png" media"(device-width: 1536px) and (orientation: portrait)"/> IOS…

google 确定某点海拔高_“湘能楚天”牌变电站的威宁之旅(一)|高海拔下如何实现与茫茫雪原环境的共生?...

“湘能楚天”牌变电站的威宁之旅——序从湘能楚天办公楼三楼坐电梯&#xff0c;出门左转上京珠高速再转杭瑞高速&#xff0c;根据百度地图的提醒&#xff0c;行车13小时40分&#xff0c;将抵达贵州威宁黑土河&#xff0c;全程1197公里&#xff0c;再前行就到了迤那。黑土河&…

.Net Core 3.0依赖注入替换 Autofac

今天早上&#xff0c;喜庆的更新VS2019&#xff0c;终于3.0正式版了呀~ 有小伙伴问了一句Autofac怎么接入&#xff0c;因为Startup.ConfigureServices不能再把返回值改成IServiceProvider了&#xff0c;原来的替换依赖注入容器就不可行了&#xff0c;我随口说了一下Host上面.Us…

designer一直未响应 qt_未雨绸缪及时清淤 曾是内涝重灾区 这次涵洞未积水

市政工人揭开井盖排水 楚天快报见习记者吴宜芝 通讯员王艳华城区几处铁路涵洞&#xff0c;曾经是城区内涝重灾区&#xff0c;每逢下雨&#xff0c;涵洞就成了一条无法逾越的鸿沟。然而此次持续6个多小时的降雨中&#xff0c;却均未出现严重的积水&#xff0c;也未影响交通。此次…

a标签点击事件_DOM事件机制

前言本文主要介绍DOM事件级别、DOM事件模型、事件流、事件代理和Event对象常见的应用&#xff0c;希望对你们有些帮助和启发&#xff01;一、DOM事件级别DOM级别一共可以分为四个级别&#xff1a;DOM0级、DOM1级、DOM2级和DOM3级。而DOM事件分为3个级别&#xff1a;DOM 0级事件…

如何开始了解一个新知识(Vuex)

我是歌谣 放弃很容易 但是坚持一定很酷 前言 每次做开发遇到一个新的知识点 总要思索着如何去实现这个新东西 最近来大概讲讲Vuex vuex是前端用的比较多的一个东西之一 通过一张图了解一下原理 原理和vuex产生原因 看完了整个的原理之后 安装就直接过去了 就是包管理工具 …