目录
概述
本文实现如何使用jenkins结合sonar可以实现代码的自动检查。
-
提交 Java 项目代码至 GitLab。
-
GitLab 通过 webhook 自动触发 Jenkins执行任务
-
Jenkins 获取代码,执行 Sonar 分析代码。
-
在 Sonar 的服务器界面查看分析结果
安装gitlab 参考本人博客:https://blog.youkuaiyun.com/allensandy/article/details/104104868
安装jenkins 参考本人博客:https://blog.youkuaiyun.com/allensandy/article/details/100995666
安装sonarqube 参考本人博客:https://blog.youkuaiyun.com/allensandy/article/details/104146568
jenkins中安装gitlab插件
要实现gitlab自动触发jenkins任务,需要在jenkins中安装gitlab插件。从jenkins的“系统管理”-“管理插件”中找到gitlab插件并下载安装,重启jenkins后生效。
jenkins中安装sonar插件
jenkins重启
再啰嗦一下,maven库文件的位置不用用docker中默认的.m2,修改方法参考:https://blog.youkuaiyun.com/allensandy/article/details/100995666
jenkins中的相关配置
JDK配置
“系统管理”-“系统配置”(.m2修改参考上面):
如果未配置maven,进入“系统管理”-“全局工具配置”
Maven配置
在gitlab中创建访问token
jenkins中安装的gitlab插件在配置时,需要gitlab的访问token,先要在gitlab中创建访问的token。点击“用户设置”-“Access Tokens”菜单,进入访问token设置界面。然后输入“Name”,并在“Scopes”中勾选“api”,点击“Create ...”按钮即可创建访问token。创建成功后,一定要将生成的token保存下来,后面将无法再查看生成的token,如果未保存后面只能重新生成。
在jenkins中配置gitlab插件
在jenkins中,进入“系统管理”-“系统设置”-“Gitlab”配置。输入“Connection name”、“Gitlab host URL”,在“Credentials”中点击“Add”添加gitlab的授权token。
点击添加后,会进入添加凭据界面。在添加界面,选择类型为“GitLab API token”,API token设置为前面在gitlab中创建的token值。然后点击“添加”按钮创建凭据。
添加完gitlab api token,在Gitlab设置界面“Credentials”中选择前面添加的token,然后点击“Test Connection”测试是否成功。测试成功后保存。
在soanrQube中生成token
在jenkins中配置sonar插件
1、系统设置
在jenkins中,进入“系统管理”-“系统设置”-“SonarQube servers”配置。勾上“Enable injection of SonarQube server configuration ...”选项,输入“Name”、“Server URL”以及“Server authentication token”。token为前面部署sonarqube服务器时创建的token。
Name: 可自定义。
Server URL: SonarQube 服务器的 URL。
Server authentication token: 点击 Add 配置凭证:类型: 选择 GitLab API token。API token: 为前面部署 SonarQube 服务器时创建的 token。
点击 Add
没有反应,建议更换浏览器,是浏览器兼容性问题。
2、全局工具配置
进入“系统管理”-“全局工具配置”-“SonarQube Scanner”,点击“SonarQube Scanner 安装”并配置SonarQube Scanner。
在jenkins中配置任务,并启用触发器
进入任务的配置界面,在源码管理设置部分,选择“Git”,配置好工程的git地址以及获取代码的凭证信息。然后在“Additional Behaviours”中添加“Clean before checkout”。可以根据自己的需要在“Branches to build”中设置所需要获取的代码分支。
进入jenkins的任务设置界面,在“构建触发器”中,勾上“Build when a change pushed to Gitlab.Gitlab webhook URL ...”(这里的webhook URL在后面配置gitlab时需要),根据自己的需要设置其它的选项。点击“高级”按钮,然后点击“Generate”按钮生成Secret token(这里的token后面配置gitlab时需要)。
在“构建环境”配置中勾选“Prepare SonarQube Scanner environment”。
“Build”
“Post Steps”
添加“Execute SonarQube Scanner”
在“Task to run”中输入scan,即分析代码。在“Analysis properties”中输入下面内容。sonar.language 指定了要分析的开发语言(特定的开发语言对应了特定的规则),sonar.sources 定义了需要分析的源代码位置(示例中的$WORKSPACE 所指示的是当前 Jenkins 项目的目录),sonar.java.binaries 定义了需要分析代码的编译后 class 文件位置;sonar.java.source 指定java版本。
sonar.login=admin
sonar.password=admin
sonar.projectKey=demo
sonar.projectName=demo
sonar.language=java
sonar.java.binaries=$WORKSPACE/XXX/target/classes/
sonar.sources=$WORKSPACE/XXX/src
sonar.java.source=1.8
此时可以先手动验证一下:
sonar中回自动产生一个项目:
在gitlab中配置webhook
在gitlab的项目设置中选择“Integrations”,然后在URL和Secret token中填入上一步jenkins设置中的token内容:
由于每次代码提交到gitlab后都触发jenkins执行任务,所以这里勾选“Push events”,然后去掉“Enable SSL verification”的勾选项,并点击“Add webhook”按钮添加。
webhook测试
添加完成后,在下面可以看到刚才添加的webhook,点击“Test”按钮在弹出的菜单中选择“Push events”发送测试请求,发送成功后会显示“Hook executed successfully”信息。
webhook发送成功后,到jenkins中可以看到正在执行触发的任务。配置成功后,后面只要有git的tag提交到gitlab即可直接触发jenkins执行sonar任务。
同时触发sonarQube scanner :