文章目录

  • 前言
  • 一、环境准备
  • 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”

jenkins sonarqube 质量域 jenkins配置sonarqube_Jenkins


选择AccessToken,输入“Name”和“Expries at”,勾选“api”;点击“Create personal access token”,生成access token,记录下来。

jenkins sonarqube 质量域 jenkins配置sonarqube_jenkins_02

2.1.2配置系统Gitlab连接信息

登陆Jenkins,点击“系统管理”->“系统设置”-> “gitlab”,配置如下:

jenkins sonarqube 质量域 jenkins配置sonarqube_Jenkins_03


Connetction name:连接名称,随便填写;

URL:gitlab的访问地址;

Credentials:鉴权凭证,即添加access token的地方,记得选择为GitLab Access Token;

jenkins sonarqube 质量域 jenkins配置sonarqube_java_04

2.2 项目设置

在项目设置中会指定使用的gitlab连接

jenkins sonarqube 质量域 jenkins配置sonarqube_java_05

2.2.1 源码管理相关配置

URL:工程的gitlab地址,本例中使用的是用户名密码鉴权的http访问;

Credentials:此处填写访问gitlab项目的用户名和密码。添加方式与之前系统配置的类似,只是类型为用户名密码方式。

jenkins sonarqube 质量域 jenkins配置sonarqube_java_06

2.2.2 建立触发器相关配置

这里选择定期构建的方式,注意每个“*”之间的空格

H/60 * * * *

jenkins sonarqube 质量域 jenkins配置sonarqube_linux_07


这样Jenkins上使用gitlab配置完毕

三、SonarQube连接Jenkens

3.1 SonarQube相关设置

3.1.1 开启强制用户身份验证

登录sonarqube并开启服务,进入配置–>配置–>权限,开启Force user authentication

jenkins sonarqube 质量域 jenkins配置sonarqube_git_08

3.1.2 生成token

点击登录用户的图标,进入我的账号–>安全,填写新令牌名称,点击生成,复制生成的token保存到一个文档中(token只出现一次,需要及时复制)

jenkins sonarqube 质量域 jenkins配置sonarqube_linux_09

3.2 Jenkins相关设置

3.2.1 在Jenkins安装sonarqube插件

进入Jenkins–>系统管理–>管理插件–>可选插件,输入sonar检索,选择sonarqube scanner for Jenkins插件安装

jenkins sonarqube 质量域 jenkins配置sonarqube_git_10


jenkins sonarqube 质量域 jenkins配置sonarqube_java_11

3.2.2 配置Jenkins上的sonarqube

进入Jenkins–>系统管理–>系统设置,找到sonarqube servers,填写相关信息,name自己起,url要填写完全,token使用前面复制的token,保存。

jenkins sonarqube 质量域 jenkins配置sonarqube_Jenkins_12

3.2.3 配置sonar-scanner

进入设置中的全局工具配置

jenkins sonarqube 质量域 jenkins配置sonarqube_git_13


配置sonar-scanner,这里sonar-scanner要选择对应兼容的版本

jenkins sonarqube 质量域 jenkins配置sonarqube_linux_14

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=./

jenkins sonarqube 质量域 jenkins配置sonarqube_java_15


以及构建环境勾选准备SonarQube Scanner环境:

jenkins sonarqube 质量域 jenkins配置sonarqube_jenkins_16

保存应用之后立即构建,查看运行结果,如果出现SonarQube的图标并可以点击查看,说明成功。

jenkins sonarqube 质量域 jenkins配置sonarqube_linux_17


点击SonarQube,即跳转到SonarQube页面查看分析

jenkins sonarqube 质量域 jenkins配置sonarqube_Jenkins_18

四、扩展

4.1 SonarQube集成GitLab用户验证

4.1.1 GitLab设置Application

使用管理员账户登录GitLab,点击个人账户——>setting——>Application,设置Application的名称以及回调链接,勾选api和read_user

jenkins sonarqube 质量域 jenkins配置sonarqube_git_19

  • 这里Redirect URI是最重要的参数,后面的/oauth2/callback/gitlab是固定的
http://你的地址及端口/oauth2/callback/gitlab

保存Application后,记下ApplicationID和Secret,在配置SonarQube时要用

jenkins sonarqube 质量域 jenkins配置sonarqube_jenkins_20

4.1.2 SonarQube下载插件

使用管理员帐号登录Sonarqube,下载GitLab Auth插件,这里要选择兼容的版本

jenkins sonarqube 质量域 jenkins配置sonarqube_java_21


下载好插件后,点击配置——>配置——>GitLab,填入GitLab的地址和刚才的数据

jenkins sonarqube 质量域 jenkins配置sonarqube_linux_22


注销掉当前登录用户,用GitLab的方式登录

jenkins sonarqube 质量域 jenkins配置sonarqube_java_23


进行授权,登录成功

jenkins sonarqube 质量域 jenkins配置sonarqube_jenkins_24

4.2 添加阿里P3C规则

虽然gitbub上已有集成了p3c的sonar-pmd,但版本是2.6,不支持7.x版本的sonar;这里对sonar-pmd的改造基于网上GitHub上已有的sonar-p3c-pmd

4.2.1 下载PMD项目

jenkins sonarqube 质量域 jenkins配置sonarqube_jenkins_25


选择合适的PMD版本,这里选择的是sonar-pmd-3.2,可参考版本对应表

jenkins sonarqube 质量域 jenkins配置sonarqube_linux_26

4.2.1 项目改造

4.2.2 应用在SonarQube

将改造好的项目打包,将jar包放在SonarQube插件的目录中,重启SonarQube服务

jenkins sonarqube 质量域 jenkins配置sonarqube_linux_27

在SonarQube的规则中即可看到P3C规则

jenkins sonarqube 质量域 jenkins配置sonarqube_git_28