码迷,mamicode.com
首页 > 其他好文 > 详细

Jenkins + SonarQube搭建自动化的代码质量管理平台

时间:2020-10-12 20:09:27      阅读:17      评论:0      收藏:0      [点我收藏+]

标签:检查   java   nal   purge   使用   管理员   记录   environ   div   

本文是Jenkins + SonarQube自动化代码审查平台的搭建过程记录,主要记录了Jenkins和SonarQube的集成过程,本文预设Jenkins已经通过Docker的方式搭建完成,所以不再赘述,请参考https://hub.docker.com/_/jenkins进行Jenkins的安装部署。

环境

本文所使用的环境:

Jenkins ver. 2.207

java version "1.8.0_181"

sonarqube:8.5.0-community

postgres:13-alpine

安装SonarQube

为了快速启动sonarqube实例,我们采用docker的方式。

sonarqube默认为英文版的,检查规则为自带的,我们这里采用中文汉化,另外java语言加入阿里p3c规则。

基于Docker-compose安装

Github有一个SonarQube快速安装的开源项目,我们可以在它的基础上做一些细微的修改:

使用Git Clone项目

git clone https://github.com/purgeteam/sonarqube-start
cd docker-start

修改 sonar-docker-start.yml,注意这里我们使用PostgreSQL作为SonarQube的数据库,最新版本已经不支持MySQL。最终修改好的yaml文件内容如下:

# 汉化版+阿里p3c验证
version: "2"

services:
  sonarqube:
    image: sonarqube:8.5.0-community
    container_name: sonarqube
    ports:
      - "9000:9000"
    networks:
      - sonarnet
    environment:
      - sonar.jdbc.url=jdbc:postgresql://postgres:5432/sonar
      - sonar.jdbc.username=sonar
      - sonar.jdbc.password=sonar
    volumes:
      - /home/data/sonarqube/data/:/opt/sonarqube/data/
      - /home/data/sonarqube/logs/:/opt/sonarqube/logs/
      - /home/data/sonarqube/extensions/:/opt/sonarqube/extensions/
      - /home/data/sonarqube/lib/bundled-plugins/:/opt/sonarqube/lib/bundled-plugins/
    depends_on:
      - postgres
    restart: unless-stopped

  postgres:
    image: postgres:13-alpine
    container_name: postgres
    ports:
      - "5432:5432"
    networks:
      - sonarnet
    environment:
      - POSTGRES_USER=sonar
      - POSTGRES_PASSWORD=sonar
    volumes:
      - /home/data/postgresql/:/var/lib/postgresql/
      - /home/data/postgresql/data/:/var/lib/postgresql/data/
    restart: unless-stopped

networks:
  sonarnet:
    driver: bridge

在使用docker-compose启动容器之前,先建立好如下几个文件夹,并copy两个jar包到 /home/data/sonarqube/extensions/plugins下:

mkdir -p /home/data/sonarqube/data
mkdir -p /home/data/sonarqube/logs
mkdir -p /home/data/sonarqube/extensions/plugins
mkdir -p /home/data/sonarqube/lib/bundled-plugins
mkdir -p /home/data/postgresql
mkdir -p /home/data/postgresql/data

# copy两个jar包
scp plugin/rhinoceros/sonar-pmd-plugin-3.2.0-SNAPSHOT.jar root@10.100.1.19:/home/data/sonarqube/extensions/plugins
scp plugin/sonar-l10n-zh-plugin-1.16.jar root@10.100.1.19:/home/data/sonarqube/extensions/plugins

完成上面的操作后,使用docker-compose启动容器:

docker-compose -f sonar-docker-start.yml up -d 

启动ok,查看控制台进行访问localhost:9000,默认账号密码:admin/admin

默认规则配置

虽然已经集成了阿里P3C,但是使用的还是默认规则,这里我们需要设置为指定规则。

以admin账号登陆,打开 质量配置 页,点击右上方的创建按钮,创建 p3c profiles

技术图片

首次创建会跳转到代码规则配置页面,刚新建的 profile 是没有激活任何规则的,需要手动激活

技术图片

我们需要为刚创建的 p3c profile 激活 p3c 规则,点击【激活更多规则】

跳转到激活页面,搜索p3c,如图,都是以[p3c]开头的规则。

技术图片

批量修改->活动 p3c -> 应用 -> 成功

技术图片

技术图片

技术图片

绑定规则成功后基本完成,我们返回质量配置,在java选择刚设置的p3c设置为默认。

技术图片

配置阿里P3C已经完成。

集成Jenkins

安装SonarQube Plugin

管理员权限登录Jenkins,选择:系统管理-->插件管理-->可选插件;搜索SonarQube Plugin,勾选,安装后重新启动JenKins。

由于我的环境是内网环境,所以只能采取离线安装的方式:

选择:系统管理-->插件管理-->高级-->上传插件,上传插件完成安装,离线插件的下载地址:https://plugins.jenkins.io/sonar/。

配置SonarQube Scanner

除了安装Plugin,还需要安装Scanner作为扫描的客户端,同样我们采用离线安装的方式,SonarQube Scanner的下载地址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/,这里我使用了当下最新的版本,sonar-scanner-cli-4.5.0.2216-linux.zip

如果Jenkins配置了Slave节点,那么每个节点都需要安装scanner!!!

下载之后解压到 /var/jenkins_home/ ,并将文件夹重命名为 sonar-scanner

管理员权限登录进入:系统管理--> 全局工具配置-->SonarQube Scanner,配置Scanner:

技术图片

配置SonarQube Servers

系统管理-->系统设置-->SonarQube servers,填写Name和Server URL,Name可以随意填写,Server URL就是SonarQube的url地址,除此之外,还需要配置token,token需要在在SonarQube中生成。

技术图片

将生成的token配置为Jenkins的凭据:

技术图片

凭据配置完成后,配置SonarQube Servers,最终效果图如下:

技术图片

至此,Jenkins的配置全部完成,接下来开始配置Git触发Jenkins扫描。

Jenkins Job配置

这里假设Jenkins的Job已经配置好,我们可以选择在 Pre Steps或者 Post Steps进行Sonar的配置,这里我选择了在 Post Steps进行SonarQube的配置:

技术图片

主要配置Analysis properties,我的配置如下:

#key和name保持一致且在sonar下唯一
sonar.projectKey=${POM_GROUPID}:${POM_ARTIFACTID}
sonar.projectName=${POM_ARTIFACTID}
#工程版本
sonar.projectVersion=${GIT_BRANCH}  
#sonar.branch.name=${GIT_BRANCH} 
#源代码目录
sonar.sources=$WORKSPACE
#分析的语言 
sonar.language=java
#编码sonar.sourceEncoding=UTF-8
sonar.java.binaries=$WORKSPACE
# setting the java class version
sonar.java.source=1.8

完整配置如图:

技术图片

完成后进行自动扫描,Jenkins Job的界面和Sonar的界面分别如下:

技术图片

技术图片

其他

社区版的SonarQube不支持多分支的扫描,目前有个开源插件可以支持,但是只支持有限的版本,有兴趣的可以尝试一下:https://github.com/mc1arke/sonarqube-community-branch-plugin。

参考

代码质量检测(SonarQube)整合中文版+阿里P3C

SonarQube Community 实现多分支扫描分析

安装SonarQube Scanner进行扫描

Jenkins + SonarQube搭建自动化的代码质量管理平台

标签:检查   java   nal   purge   使用   管理员   记录   environ   div   

原文地址:https://www.cnblogs.com/zongwei/p/13801210.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!