标签:检查 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
实例,我们采用docker的方式。
sonarqube
默认为英文版的,检查规则为自带的,我们这里采用中文汉化,另外java
语言加入阿里p3c规则。
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。
由于我的环境是内网环境,所以只能采取离线安装的方式:
选择:系统管理-->插件管理-->高级-->上传插件,上传插件完成安装,离线插件的下载地址:https://plugins.jenkins.io/sonar/。
除了安装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,填写Name和Server URL,Name可以随意填写,Server URL就是SonarQube的url地址,除此之外,还需要配置token,token需要在在SonarQube中生成。
将生成的token配置为Jenkins的凭据:
凭据配置完成后,配置SonarQube Servers,最终效果图如下:
至此,Jenkins的配置全部完成,接下来开始配置Git触发Jenkins扫描。
这里假设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。
Jenkins + SonarQube搭建自动化的代码质量管理平台
标签:检查 java nal purge 使用 管理员 记录 environ div
原文地址:https://www.cnblogs.com/zongwei/p/13801210.html