Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台

摘要:
前言本文主要介绍Jenkins+SonarQube+Gitlab的集成,以构建一个自动化的连续代码扫描质量平台。在博客发布之前,已经有关于Jenkins、SonarQube和Gitlab安装的文章。本文主要描述三个平台的集成和使用,以实现连续代码集成和自动部署。最后,使用systemctlrestartjenkins.service在服务器中重新启动Jenkins。詹金斯已经完成了gitlab的集成。接下来,在sonarqub集成之后,演示将用于演示。Jenkins部分PS:此实例的目标是同步更新代码,并在Gitlab中的项目更新代码时完成自动部署。

前言

本篇文章主要介绍的是Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台的集成。

博客之前已经有关于Jenkins、SonarQube、Gitlab分别安装的文章,本文主要说明三种平台集成使用,实现代码持续集成与自动化部署。

一、jenkins集成gitlab

jenkins中添加gitlab插件,选择直接安装,然后服务器中重启jenkins。

Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第1张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第2张

gitlab中生成AccessToken

打开gitlab,在gitlab中用户设置—>访问令牌选项中生成token,scope为第一个等级:api

Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第3张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第4张

jenkins中添加gitlab中生成的token

1.打开jenkins,在Jenkins添加全局凭据,类型为APIToken

Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第5张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第6张

2.使用Test connection验证添加成功
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第7张

安装中可能出现的问题:
Manage Jenkins—>出现红色报错信息 pluginname is missing. To fix, install v** or later. 插件所依赖的其他插件,需要自己安装。
解决方案:http://updates.jenkins-ci.org/download/plugins/中搜索报错信息中对应的pluginname, 选择合适的版本下载,然后手动上传。最后服务器中使用systemctl restart jenkins.service 重启Jenkins
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第8张

至此,Jenkins集成gitlab完成,接下来集成sonarqub后,将使用demo一起进行演示。

二、jenkins集成sonarqube

1.打sonarqube,点击Administrator->security->user,点击token按钮,输入key后再点击generate进行生成,复制该token。

Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第9张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第10张

2.打Jenkins,Jenkins中安装插件 SonarQube-scanner(插件版本为2.6.1),插件可在http://updates.jenkins-ci.org/download/plugins/ 中下载,浏览器中ctrl+f,搜索sonar。然后在Manage Jenkins-->Manage Plugins-->高级中,上传插件,重启Jenkins。

3.在系统管理->系统设置中,找到SonarQube servers模块,填写服务器信息

Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第11张

4.加载JDK与Sonar-scanner全局配置,jdk安装目录为Jenkins中jdk的安装目录,如果有默认配置,需要先删除。

Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第12张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第13张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第14张

三、demo测试

gitlab部分

1.进入gitlab首页,创建群组
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第15张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第16张

2.在群组中创建一个项目

Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第17张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第18张

3.复制该项目的gitlab地址
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第19张

4.打开资源管理器,新建一个文件夹作为 Git 代码存放位置,进入该新建文
件夹后在空白处单击鼠标右键,选择“Git 克隆…”;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第20张

5.可能会有弹窗,要求输入gitlab的账号密码,输入即可。
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第21张

6.克隆完成后,点击关闭按钮
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第22张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第23张

7.上传代码测试,进入【demo】文件夹,将一份代码复制至该目录下;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第24张

8.在空白处单击鼠标右键,选择“Git 同步…”,在弹出的“Git 同步–TortoiseGit”对话框中点击“拉取(P)”按钮,同步项目在 Gitlab 服务器的版本;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第25张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第26张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第27张

9.在空白处单击鼠标右键,选择“Git 提交(C) ->”master”…”;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第28张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第29张

10.待提交成功后,点击“推送(H)”按钮,并在弹出的“推送 –TortoiseGit”对话框中勾选“推送所有分支(P)”,单击“确定”按钮完成代码推送;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第30张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第31张

11.刷新gitlab页面,发现上传成功。
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第32张

jenkins部分

PS:此实例目标为实现 Gitlab 中【demo】项目更新代码时, Jenkins 同步更新代
码并完成自动化部署。

1.登录jenkins,单击左侧主菜单中的“新建 Item”按钮,进入新建任务向导;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第33张

2.输入任务名称“demo”,选择“Freestyle project”后点击确定;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第34张

3.点击“源码管理”标签,选择“Git”单选框,输入【demo】项目克隆链接,在“Credentials”单选框中添加凭证,然后选择该凭证;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第35张
添加凭证;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第36张

4.配置 Webhook,点击“构建触发器”标签,勾选“Build when a change is pushed to GitLab. GitLab webhook URL:...”,并点击弹出菜单中的“高级…”按钮;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第37张

5.点击"Secret token"标签右侧的"Generate"按钮生成 Token 密钥,记录该密钥及该工程在 Jenkins中的URL(分别在如下图"2"、"3"所示位置),点击“保存”按钮完成工程配置。
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第38张

6.登录 Gitlab 并进入【demo】项目,点击左侧菜单中“设置-集成”标签;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第39张

7.在 URL 中键入刚刚获取到的 Jenkins 工程 URL 及 Token 密钥,点击"Add webhook"按钮完成 Gitlab 中【demo】项目配置;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第40张

8.出现【urlis blocked:Requests to the local network are not allowed】错误
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第41张

解决方案:
gitlab 10.6 版本以后为了安全,不允许向本地网络发送webhook请求,如果想向本地网络发送webhook请求,则需要使用管理员帐号登录,默认管理员帐号是root或者admin@example.com,密码就是你gitlab搭建好之后第一次输入的密码,登录之后,走下图步骤:
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第42张
重新走第六、七步骤。

9.向下滚动右侧拖动条可见新建的 Webhook,点击右侧“Test”下拉框,选择“Push events”测试 Webhook 配置,如显示 Hook executedsuccessfully: HTTP 200 即表明 Webhook 配置成功;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第43张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第44张

10.重新切换到 Jenkins【demo】工程中可见 Jenkins 已成功响应 Gitlab的 Push 事件;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第45张

11.Push测试
打开资源管理器,进入【demo】项目文件夹,新建一个文本文档;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第46张
在空白位置单击鼠标右键选择“Git 同步”并在弹出对话框中完成服务器代码版本拉取;
同步服务器代码版本后单击鼠标右键选择"Git 提交(C) ->"master"…"并在弹出对话框中完成变更提交
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第47张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第48张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第31张

12.在 Jenkins 成功看到 Push 事件即表明 Jenkins 配置成功;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第50张

jenkins集成sonarqube部分

ps:此教程对 SonarQube 的使用全部基于 Jenkins 平台;
1.打开浏览器通过任意链接访问Jenkins,进入Jenkins主页;点击【demo】项目进入项目主页;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第51张

2.点击左侧菜单栏“配置”按钮进入项目配置;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第52张

3.点击"构建触发器"标签,在"构建"一栏中点击"增加构建步骤"下拉框,选择"Execute SonarQube Scanner";
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第53张

4.在弹出的“Execute SonarQube Scanner”页面中填入以下 Analysis properties 信息后单击“保存”按钮完成项目配置;

# 项目标识符,在给定的 SonarQube 中必须是唯一的
sonar.projectKey=lxgblog:demo
# 项目名称,这是 SonarQube 中显示的名称
sonar.projectName=demo
# 项目版本号
sonar.projectVersion=1.0
# 以下定义可在项目根目录新建 sonar-project.properties 文件, SonarQube 会默认读取该文件,
# 指定工程源文件所在的目录, "./"可表示根目录,在 Windows 系统使用时注意用"/"代替""
sonar.sources=./src
# 针对 JAVA 工程,需要指定 class 文件所在的目录
sonar.java.binaries=./target/classes
# 指定工程编程语言
sonar.language=java
# 指定工程字符编码
sonar.sourceEncoding=UTF-8

Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第54张

5.Build 测试,回到【demo】项目主页,单击左侧菜单栏“Build Now”按钮进行代码编
译,可以在 Build History 中实时看到编译过程,编译完成后会生成一个新的构建历史#4
(ps:#3被我删了);

6.点击“#4”按钮进入 4 号构建过程,点击左侧菜单栏“控制台输出”按钮可以看到本次项目构建的详细过程(有兴趣的可以看看整个工程构建及代码分析过程);
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第55张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第56张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第57张

7.回到【demo】项目主页,点击左侧菜单栏"SonarQube"按钮将跳转到SonarQube 项目名为【demo】的主页即可看到代码分析的结果;
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第58张
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台第59张

CSDN:https://blog.csdn.net/qq_27682773
简书:https://www.jianshu.com/u/e99381e6886e
博客园:https://www.cnblogs.com/lixianguo
个人博客:https://www.lxgblog.com

免责声明:文章转载自《Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇怎么卸载Apache_pn服务PHPnow使用问题EMQX_AUTH_HTTP 插件使用指南下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[Jenkins]初次访问Jenkins,输入密码后,页面卡在空白界面一直未加载出内容_解决方案

问题描述 安装Jenkins,初次访问Jenkins(http://localhost:8002,端口号根据各自设置而不同,本例是8002),输入Jenkins初始化的管理密码之后,浏览器中一直卡在空白界面中,没有内容加载出来 异常界面 问题分析 F12查看浏览器中的Request和Response情况: 从Request URL中初步分析...

interlliJ idea 不识别文件类型的解决方式

idea 支持非常多种文件类型。然而总有想不到。 近期开发jenkins 插件,jenkins 插件的页面开发大多用jelly 如何让idea识别jelly呢? ctrl+alt+s 快捷键打开配置页面。 搜索file type, 加入一个file类型,此处文件名称写jelly file 然后加入一个patterns。设置为*.jelly。 OK了 就像...

C# 没落了吗?

先上图 ------------------------------------------ C#没落与否跟微软整个平台息息相关。 C#最近几年用的人越来越少,也是因为越来越少的人专门为微软平台开发产品。 基本上,你要开个公司做软件,你如果钱足够的话,一般肯定要做iOS, Android, Web 3个版本,但是是否做Windows版本就不好说了。 现在...

使用WinScp上传文件到阿里云服务器上

1、首先要下载WinSCP,百度一搜到处都是。 下载好之后直接打开exe文件: 2、连接远程主机 打开之后是这个样子的:将主机名、用户名密码填上,再点击登录即可: 有的人不知道实例密码是什么,可以参考我的这一片文章:https://www.cnblogs.com/Guorisy/p/12445224.html 3、上传文件 登录之后: 到这一步说明一件...

python2.7+RobotFramework的UI自动化环境搭建

robotFramework是一种比较常见的自动化测试框架,此篇记录环境搭建 目录 1、软件准备 2、执行安装 1、软件准备 python-2.7.15.amd64.msi 链接:https://pan.baidu.com/s/15yS3-wTq7PDzI0rFhkDNLA 密码:hg2n wxPython2.8-win64-unicode-2.8.12....

交换分区,进程,rpm&yum

一:1)开启Linux系统前添加一块大小为15G的SCSI硬盘 2)开启系统,右击桌面,打开终端3)为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分区,大小为5G 4)格式化主分区为ext3系统 5)将逻辑分区设置为交换分区 6)启用上一步的交换分区 7)查看交换分区的状态 二:free命令查看内存 整理buffer...