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

前言

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

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

一、jenkins集成gitlab

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

image

image
gitlab中生成AccessToken

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

image

image
jenkins中添加gitlab中生成的token

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

image

image

2.使用Test connection验证添加成功


image

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

image

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

二、jenkins集成sonarqube

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

image

image

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模块,填写服务器信息

image

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

image

image

image

三、demo测试

gitlab部分

1.进入gitlab首页,创建群组


image

image

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

image

image

3.复制该项目的gitlab地址


image

4.打开资源管理器,新建一个文件夹作为 Git 代码存放位置,进入该新建文
件夹后在空白处单击鼠标右键,选择“Git 克隆…”;


image

5.可能会有弹窗,要求输入gitlab的账号密码,输入即可。


image

6.克隆完成后,点击关闭按钮


image

image

7.上传代码测试,进入【demo】文件夹,将一份代码复制至该目录下;


image

8.在空白处单击鼠标右键,选择“Git 同步…”,在弹出的“Git 同步–TortoiseGit”对话框中点击“拉取(P)”按钮,同步项目在 Gitlab 服务器的版本;


image

image

image

9.在空白处单击鼠标右键,选择“Git 提交(C) ->”master”…”;


image

image

10.待提交成功后,点击“推送(H)”按钮,并在弹出的“推送 –TortoiseGit”对话框中勾选“推送所有分支(P)”,单击“确定”按钮完成代码推送;


image

image

11.刷新gitlab页面,发现上传成功。


image

jenkins部分

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

1.登录jenkins,单击左侧主菜单中的“新建 Item”按钮,进入新建任务向导;


image

2.输入任务名称“demo”,选择“Freestyle project”后点击确定;


image

3.点击“源码管理”标签,选择“Git”单选框,输入【demo】项目克隆链接,在“Credentials”单选框中添加凭证,然后选择该凭证;


image

添加凭证;


image

4.配置 Webhook,点击“构建触发器”标签,勾选“Build when a change is pushed to GitLab. GitLab webhook URL:...”,并点击弹出菜单中的“高级…”按钮;


image

5.点击"Secret token"标签右侧的"Generate"按钮生成 Token 密钥,记录该密钥及该工程在 Jenkins中的URL(分别在如下图"2"、"3"所示位置),点击“保存”按钮完成工程配置。


image

6.登录 Gitlab 并进入【demo】项目,点击左侧菜单中“设置-集成”标签;


image

7.在 URL 中键入刚刚获取到的 Jenkins 工程 URL 及 Token 密钥,点击"Add webhook"按钮完成 Gitlab 中【demo】项目配置;


image

8.出现【urlis blocked:Requests to the local network are not allowed】错误


image

解决方案:
gitlab 10.6 版本以后为了安全,不允许向本地网络发送webhook请求,如果想向本地网络发送webhook请求,则需要使用管理员帐号登录,默认管理员帐号是root或者admin@example.com,密码就是你gitlab搭建好之后第一次输入的密码,登录之后,走下图步骤:

image

重新走第六、七步骤。

9.向下滚动右侧拖动条可见新建的 Webhook,点击右侧“Test”下拉框,选择“Push events”测试 Webhook 配置,如显示 Hook executedsuccessfully: HTTP 200 即表明 Webhook 配置成功;


image

image

10.重新切换到 Jenkins【demo】工程中可见 Jenkins 已成功响应 Gitlab的 Push 事件;


image

11.Push测试
打开资源管理器,进入【demo】项目文件夹,新建一个文本文档;


image

在空白位置单击鼠标右键选择“Git 同步”并在弹出对话框中完成服务器代码版本拉取;
同步服务器代码版本后单击鼠标右键选择"Git 提交(C) ->"master"…"并在弹出对话框中完成变更提交


image

image

image

12.在 Jenkins 成功看到 Push 事件即表明 Jenkins 配置成功;


image

jenkins集成sonarqube部分

ps:此教程对 SonarQube 的使用全部基于 Jenkins 平台;
1.打开浏览器通过任意链接访问Jenkins,进入Jenkins主页;点击【demo】项目进入项目主页;


image

2.点击左侧菜单栏“配置”按钮进入项目配置;


image

3.点击"构建触发器"标签,在"构建"一栏中点击"增加构建步骤"下拉框,选择"Execute SonarQube Scanner";


image

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
image

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

6.点击“#4”按钮进入 4 号构建过程,点击左侧菜单栏“控制台输出”按钮可以看到本次项目构建的详细过程(有兴趣的可以看看整个工程构建及代码分析过程);


image

image

image

7.回到【demo】项目主页,点击左侧菜单栏"SonarQube"按钮将跳转到SonarQube 项目名为【demo】的主页即可看到代码分析的结果;


image

image

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容