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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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

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

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

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

.Net Core下基于Emit的打造AOP

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

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

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

.Net Core 3.0依赖注入替换 Autofac

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

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

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

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

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

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

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

.Net Core 3.0下AOP试水~~

昨天躺了一下3.0的依赖注入的雷 今天顺势把AOP做了一下调整,比如自动化的AOP注入 默认的Program里面的CreateHostBuilder方法增加一行 public static IHostBuilder CreateHostBuilder(string[] args) >Host.CreateDefaultBuilder(args).UseServiceProviderFactor…

golang 读取文件最后一行_测试用例是开发人员最后一块遮羞布

测试用例是开发人员最后一块遮羞布最近一周写一个比较复杂的业务模块,越写到后面真心越心虚。操作越来越复杂了,代码也逐渐凌乱了起来。比如一个接口,传入的是一个比较复杂的大json,我需要解析这个大json,然后根据json…

android 进度条_Android仿水波纹流球进度条控制器,实现高端大气的主流特效

今天看到一个效果挺不错的,就模仿了下来,加上了一些自己想要的效果,感觉还不错的样子,所以就分享出来了,话不多说,上图CircleView这里主要是实现中心圆以及水波特效package com.lgl.circleview;import andr…

docker php composer 使用_如何使用Docker部署PHP开发环境

本文主要介绍了如何使用Docker构建PHP的开发环境,文中作者也探讨了构建基于Docker的开发环境应该使用单容器还是多容器,各有什么利弊。推荐PHP开发者阅读。希望对大家有所帮助。环境部署一直是一个很大的问题,无论是开发环境还是生产环境&…

from 下拉框多个值提交_Git提交规范

规范的作用大多数情况下,看提交历史的人跟提交代码的人都不是同一个人,当别人阅读你的提交历史时,他很可能是不知道具体代码细节的,你如何在最短的时间内让他一眼知道每次提交的意义:每次提交影响的具体范围&#xff1…

【物联网智能网关-03】GPRS模块中文短信收发

在去年年初,就已经推出V1.0.0的GPRS库,不过在这个版本上只是实现了西文短信收发和字符串方式的GPRS数据通信,功能还相对不完善(参见我以前的博文《GPRS通信实现》)。最近升级的版本,对以上功能进行了大幅度…

蓄电池单格电压多少伏_蓄电池充电规范手册

很多用户在买完蓄电池之后第一想法就是赶紧充电,很多陋习让用户使用行为造成了新买的蓄电池没怎么用感觉就和旧的没啥区别。而且使用时间越来越短到头来企业还失去了很多的客户,德国阳光蓄电池手册整理整编了在不同的环境中我们该如何很好的去维护自己的…

钉钉机器人关键词应答_除了用于电销,智能语音机器人可以应用哪些地方?

之前的文章探讨的是智能语音机器人在电销行业的应用,然而在实际的场景中,电销行业的应用只是大家所熟知的行业之一。对比于人工电销,使用智能语音机器人有着诸多优势,例如:工作效率高、意向筛选、电话录音并转化为文字…

1-2docker-基本的使用

1、Docker 官⽅提供了⼀个公共的镜像仓库 https://hub.docker.com2、获取镜像 docker pull [选项] [Docker Registry 地址[:端⼝]/]仓库名[:标签]3、运行镜像 docker run -it --rm ubuntu:16.04 /bin/bash -it:这是两个参数,⼀个是 -i:交互式…