炼数成金 门户 大数据 编程开发 查看内容

集成gitlab、Jenkins与Sonar实现代码自动检查

2019-9-4 10:42| 发布者: 炼数成金_小数| 查看: 40687| 评论: 0|原作者: tinylk|来自: 简书

摘要: 在项目的开发过程中,为了保证代码的质量便于后期的代码维护,需要遵循统一的代码规范。但是通过人工逐一查看代码去检查费时费力,使用jenkins结合sonar可以实现代码的自动检查。

管理 工具 测试 Hadoop 服务器

前言
在项目的开发过程中,为了保证代码的质量便于后期的代码维护,需要遵循统一的代码规范。但是通过人工逐一查看代码去检查费时费力,使用jenkins结合sonar可以实现代码的自动检查。

本文中自动分析过程大致为以下步骤:
提交Java项目代码至gitlab
gitlab通过webhook自动触发jenkins执行任务
jenkins获取代码,执行sonar分析代码。
在sonar的服务器界面查看分析结果

下面的示例中,jenkins版本为2.121.3,gitlab版本为10.0.2-ce,SonarQube版本为7.4,如果使用的版本不一致可能会有部分设置差异。

安装部署
部署jenkins
这里采用docker的方式部署jenkins。

在终端中运行docker命令,使用jenkinsci/blueocean镜像运行容器。

docker run \
  -d \
  -u root \
  -p 8080:8080 \
  -v jenkins_home:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkinsci/blueocean

访问 http://localhost:8080 地址,等待出现下面解锁界面。


解锁jenkins

使用docker logs 命令从日志信息中 复制自动生成的密码(在两组星号之间)。


默认密码

在 解锁Jenkins 页面, 粘贴密码并继续。
解锁jenkins后,在界面中选择“安装建议的插件”。
最后,jenkins要求创建管理员用户。创建新用户或使用admin用户,按照步骤完成后即可登录使用jenkis了。

部署SonarQube
这里采用docker的方式部署SonarQube。

在终端中运行docker命令,使用sonarqube镜像运行容器。

docker run \
  -d \
  -p 9000:9000 \
  sonarqube:7.4-community

访问 http://localhost:9000 地址,等待出现下面界面。点击“log in”,并使用默认用户和密码 admin / admin登录。

sonar登录

登录后按照下图中步骤,生成访问token。


生成token

配置jenkins任务
安装sonar插件,并创建jenkins任务。
jenkins中安装sonar插件
jenkins中要实现代码扫描,需要在jenkins中安装SonarQube Scanner插件。从jenkins的“系统管理”-“管理插件”中找到SonarQube Scanner插件并下载安装,重启jenkins后生效。

选择sonar插件

安装插件

jenkins中配置sonar插件
在jenkins中,进入“系统管理”-“系统设置”-“SonarQube servers”配置。勾上“Enable injection of SonarQube server configuration ...”选项,输入“Name”、“Server URL”以及“Server authentication token”。token为前面部署sonarqube服务器时创建的token。

设置sonar server

进入“系统管理”-“全局工具配置”-“SonarQube Scanner”,点击“SonarQube Scanner 安装”并配置SonarQube Scanner。

增加sonar scanner

同样如果未配置maven,进入“系统管理”-“全局工具配置”-“Maven”,配置maven。

添加maven

新建maven任务
点击“新建任务”,输入名称并选择“maven项目”,然后点击确定。如果没有“maven项目”可以选择,请先至插件管理中安装“Maven Integration”插件。

新建maven任务

配置maven任务
进入任务的配置界面,在源码管理设置部分,选择“Git”,配置好工程的git地址以及获取代码的凭证信息。然后在“Additional Behaviours”中添加“Clean before checkout”。可以根据自己的需要在“Branches to build”中设置所需要获取的代码分支。

源码管理

在“构建环境”配置中勾选“Prepare SonarQube Scanner environment”。

构建环境

在“Post Steps”中点击“Add post-build step”,添加“Execute SonarQube Scanner”。


添加Execute SonarQube Scanner步骤

在“Task to run”中输入scan,即分析代码。在“Analysis properties”中输入下面内容。sonar.language 指定了要分析的开发语言(特定的开发语言对应了特定的规则),sonar.sources 定义了需要分析的源代码位置(示例中的$WORKSPACE 所指示的是当前 Jenkins 项目的目录),sonar.java.binaries 定义了需要分析代码的编译后 class 文件位置;sonar.java.source 指定java版本。
sonar.projectKey=demo
sonar.projectName=demo
sonar.language=java
sonar.java.binaries=$WORKSPACE/target/classes/ 
sonar.sources=$WORKSPACE/src
sonar.java.source=1.8


配置Execute SonarQube Scanner步骤

测试jenkins任务
在创建的jenkins任务中,点击“立即构建”即可立即执行sonar任务。

立即构建

执行成功后,打开sonarqube的地址,即可看到代码检查结果。

代码检查结果

设置gitlab自动触发jenkins
前面的步骤中已经完成了手动执行jenkins执行sonar任务完成构建部署任务,下面说明如何在代码提交后让gitlab自动触发jenkins执行sonar任务。
jenkins中安装gitlab插件
要实现gitlab自动触发jenkins任务,需要在jenkins中安装gitlab插件。从jenkins的“系统管理”-“管理插件”中找到gitlab插件并下载安装,重启jenkins后生效。

选择gitlab插件

安装gitlab插件

在gitlab中创建访问token
安装的gitlab插件在配置时,需要gitlab的访问token,先要在gitlab中创建访问的token。点击“用户设置”-“Access Tokens”菜单,进入访问token设置界面。然后输入“Name”,并在“Scopes”中勾选“api”,点击“Create ...”按钮即可创建访问token。创建成功后,一定要将生成的token保存下来,后面将无法再查看生成的token,如果未保存后面只能重新生成。

创建token

token创建成功

jenkins中配置gitlab插件
在jenkins中,进入“系统管理”-“系统设置”-“Gitlab”配置。

jenkins系统设置

输入“Connection name”、“Gitlab host URL”,在“Credentials”中点击“Add”添加gitlab的授权token。

配置gitlab

点击添加后,会进入添加凭据界面。在添加界面,选择类型为“GitLab API token”,API token设置为前面在gitlab中创建的token值。然后点击“添加”按钮创建凭据。

添加gitlab api token

添加完gitlab api token,在Gitlab设置界面“Credentials”中选择前面添加的token,然后点击“Test Connection”测试是否成功。测试成功后保存。

测试连接

配置jenkins任务,启用触发器
进入jenkins的任务设置界面,在“构建触发器”中,勾上“Build when a change pushed to Gitlab.Gitlab webhook URL ...”(这里的webhook URL在后面配置gitlab时需要),根据自己的需要设置其它的选项。点击“高级”按钮,然后点击“Generate”按钮生成Secret token(这里的token后面配置gitlab时需要)。

启用gitlab触发

生成Secret token

在gitlab中配置webhook
在gitlab的项目设置中选择“Integrations”,然后在URL和Secret token中填入上一步jenkins设置中的到的内容。由于每次代码提交到gitlab后都触发jenkins执行任务,所以这里勾选“Push events”,然后去掉“Enable SSL verification”的勾选项,并点击“Add webhook”按钮添加。

gitlab配置webhook

webhook测试
添加完成后,在下面可以看到刚才添加的webhook,点击“Test”按钮在弹出的菜单中选择“Push events”发送测试请求,发送成功后会显示“Hook executed successfully”信息。

push Test

push成功

webhook发送成功后,到jenkins中可以看到正在执行触发的任务。配置成功后,后面只要有git的tag提交到gitlab即可直接触发jenkins执行sonar任务。

webhook触发执行

声明:本文版权归原作者所有,文章收集于网络,为传播信息而发,如有侵权,请联系小编及时处理,谢谢!

欢迎加入本站公开兴趣群
软件开发技术群
兴趣范围包括:Java,C/C++,Python,PHP,Ruby,shell等各种语言开发经验交流,各种框架使用,外包项目机会,学习、培训、跳槽等交流
QQ群:26931708

Hadoop源代码研究群
兴趣范围包括:Hadoop源代码解读,改进,优化,分布式系统场景定制,与Hadoop有关的各种开源项目,总之就是玩转Hadoop
QQ群:288410967 

鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

 

GMT+8, 2019-12-13 05:40 , Processed in 0.166054 second(s), 24 queries .