文章目录
- 前言
- 一、环境准备
- 1.1 SonarQube安装配置
- 1.2 Jenkins安装配置
- 1.3 GitLab安装配置
- 二、Jenkens连接GitLab
- 2.1 系统配置
- 2.1.1获取连接token
- 2.1.2配置系统Gitlab连接信息
- 2.2 项目设置
- 2.2.1 源码管理相关配置
- 2.2.2 建立触发器相关配置
- 三、SonarQube连接Jenkens
- 3.1 SonarQube相关设置
- 3.1.1 开启强制用户身份验证
- 3.1.2 生成token
- 3.2 Jenkins相关设置
- 3.2.1 在Jenkins安装sonarqube插件
- 3.2.2 配置Jenkins上的sonarqube
- 3.2.3 配置sonar-scanner
- 3.2.4 配置项目构建
- 四、扩展
- 4.1 SonarQube集成GitLab用户验证
- 4.1.1 GitLab设置Application
- 4.1.2 SonarQube下载插件
- 4.2 添加阿里P3C规则
- 4.2.1 下载PMD项目
- 4.2.1 项目改造
- 4.2.2 应用在SonarQube
前言
最近尝试着搭建SonarQube,要和Jenkins与GitLab一起使用,在此记录,如有错误,希望可以指出。
一、环境准备
- 整体工作流程
二、Jenkens连接GitLab
2.1 系统配置
Jenkins连接gitlab需要配置access token,所以先在gitlab上生成access token,后将该token配置在Jenkins上。(access token只需配置一次,后续每个工程直接使用即可)
2.1.1获取连接token
登陆gitlab,在用户头像下拉图标,选择“Setting”
选择AccessToken,输入“Name”和“Expries at”,勾选“api”;点击“Create personal access token”,生成access token,记录下来。
2.1.2配置系统Gitlab连接信息
登陆Jenkins,点击“系统管理”->“系统设置”-> “gitlab”,配置如下:
Connetction name:连接名称,随便填写;
URL:gitlab的访问地址;
Credentials:鉴权凭证,即添加access token的地方,记得选择为GitLab Access Token;
2.2 项目设置
在项目设置中会指定使用的gitlab连接
2.2.1 源码管理相关配置
URL:工程的gitlab地址,本例中使用的是用户名密码鉴权的http访问;
Credentials:此处填写访问gitlab项目的用户名和密码。添加方式与之前系统配置的类似,只是类型为用户名密码方式。
2.2.2 建立触发器相关配置
这里选择定期构建的方式,注意每个“*”之间的空格
H/60 * * * *
这样Jenkins上使用gitlab配置完毕
三、SonarQube连接Jenkens
3.1 SonarQube相关设置
3.1.1 开启强制用户身份验证
登录sonarqube并开启服务,进入配置–>配置–>权限,开启Force user authentication
3.1.2 生成token
点击登录用户的图标,进入我的账号–>安全,填写新令牌名称,点击生成,复制生成的token保存到一个文档中(token只出现一次,需要及时复制)
3.2 Jenkins相关设置
3.2.1 在Jenkins安装sonarqube插件
进入Jenkins–>系统管理–>管理插件–>可选插件,输入sonar检索,选择sonarqube scanner for Jenkins插件安装
3.2.2 配置Jenkins上的sonarqube
进入Jenkins–>系统管理–>系统设置,找到sonarqube servers,填写相关信息,name自己起,url要填写完全,token使用前面复制的token,保存。
3.2.3 配置sonar-scanner
进入设置中的全局工具配置
配置sonar-scanner,这里sonar-scanner要选择对应兼容的版本
3.2.4 配置项目构建
返回Jenkins的项目设置中,在构建中进行配置
其中:
sonar.projectKey,sonar.projectName(项目名称,可在项目工程的pom.xml中找)
sonar.projectVersion是版本(pom.xml中的版本信息)
sonar.sources是需要sonar分析的项目工程中的文件路径
sonar.projectKey=项目示例123
sonar.projectName=项目示例123
sonar.projectVersion=1.0-SNAPSHOT
sonar.sourceEncoding=UTF-8
sonar.language=java
sonar.sources=./
sonar.login=admin
sonar.password=admin
sonar.java.binaries=./
以及构建环境勾选准备SonarQube Scanner环境:
保存应用之后立即构建,查看运行结果,如果出现SonarQube的图标并可以点击查看,说明成功。
点击SonarQube,即跳转到SonarQube页面查看分析
四、扩展
4.1 SonarQube集成GitLab用户验证
4.1.1 GitLab设置Application
使用管理员账户登录GitLab,点击个人账户——>setting——>Application,设置Application的名称以及回调链接,勾选api和read_user
- 这里Redirect URI是最重要的参数,后面的/oauth2/callback/gitlab是固定的
http://你的地址及端口/oauth2/callback/gitlab
保存Application后,记下ApplicationID和Secret,在配置SonarQube时要用
4.1.2 SonarQube下载插件
使用管理员帐号登录Sonarqube,下载GitLab Auth插件,这里要选择兼容的版本
下载好插件后,点击配置——>配置——>GitLab,填入GitLab的地址和刚才的数据
注销掉当前登录用户,用GitLab的方式登录
进行授权,登录成功
4.2 添加阿里P3C规则
虽然gitbub上已有集成了p3c的sonar-pmd,但版本是2.6,不支持7.x版本的sonar;这里对sonar-pmd的改造基于网上GitHub上已有的sonar-p3c-pmd
4.2.1 下载PMD项目
选择合适的PMD版本,这里选择的是sonar-pmd-3.2,可参考版本对应表
4.2.1 项目改造
4.2.2 应用在SonarQube
将改造好的项目打包,将jar包放在SonarQube插件的目录中,重启SonarQube服务
在SonarQube的规则中即可看到P3C规则