Sonarqube的部署和Jenkins maven配合使用
一、什么是Sonarqube
SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误,本文将会介绍一下这个工具的安装、配置以及使用。
二、如何安装Sonarqube
2.1 docker和docker-compose的安装
docker和docker-compose安装请依照其他百度资料,本文重点在于sonarqube的安装
2.2 sonarqube安装
~]# cat docker-compose.yml
version: '3'
services:
sonarqube:
image: sonarqube:7.4-community # 如果你的项目时jdk8,值得注意的是拉取sonarqube镜像时,不要高于8.0版本,因为sonarqube-8.0版本以上使用的jdk是jdk11,在代码分析的时候可能不兼容导致失败
ports:
- "9000:9000"
networks:
- sonarnet
environment:
- SONARQUBE_JDBC_USERNAME=sonar
- SONARQUBE_JDBC_PASSWORD=sonar
- SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar
db:
image: postgres
networks:
- sonarnet
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
networks:
sonarnet:
driver: bridge
~]# docker-compose up -d
~]# docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------
sonarqube_db_1 docker-entrypoint.sh postgres Up 5432/tcp
sonarqube_sonarqube_1 ./bin/run.sh Up 0.0.0.0:9000->9000/tcp,:::9000->9000/tcp
2.3 web端汉化
访问本机IP:9000
点击登录,默认账号密码是admin:admin,然后跳过创建密钥,就进入主页了,但是我们看到主页面是英文的,这时我们可以利用汉化包进行汉化。汉化包地址:https://github.com/xuhuisheng/sonar-l10n-zh/releases?page=4,找到支持此次安装的SonarQube-7.4版本的汉化包。
# 下载汉化包
root@test-server:/data/sonarqube# wget https://github.com/xuhuisheng/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-1.24/sonar-l10n-zh-plugin-1.24.jar
root@test-server:/data/sonarqube# ls
docker-compose.yml sonar-l10n-zh-plugin-1.24.jar
# 将汉化包放入容器
root@test-server:/data/sonarqube# docker cp sonar-l10n-zh-plugin-1.24.jar sonarqube_sonarqube_1:/opt/sonarqube/extensions/downloads/
Successfully copied 46.1kB to sonarqube_sonarqube_1:/opt/sonarqube/extensions/downloads/
# 重启容器
root@test-server:/data/sonarqube# docker-compose restart sonarqube
Restarting sonarqube_sonarqube_1 ... done
刷新页面,看到中文说明汉化成功
三、结合Jenkins pipeline
3.1 生成令牌
点击右上角的A,然后点击下拉菜单我的账号
点击安全输入令牌名称,点击生成,保存好生成的令牌
3.2 Jenkins配置
1、安装SonarQube的插件**(SonarQube Scanner)**
2、重启Jenkins
3、将刚刚在sonarqube中生成的令牌保存在Jenkins的全局凭据中,类型选择Secret text
生成后的样子
4、配置Jenkins系统工具
在系统配置中配置好SonarQube server
5、配置全局工具
3.3 pipeline使用
新建一个项目,选择流水线
// 流水线
pipeline {
// 参数化构建
agent any
parameters {
gitParameter (name: 'BRANCH_TAG',
type: 'PT_BRANCH_TAG',
branchFilter: 'origin/(.*)',
defaultValue: 'main',
selectedValue: 'DEFAULT',
sortMode: 'DESCENDING_SMART',
description: '⚠ 选择分支或标签')
}
// 流水线阶段
stages {
stage('拉取代码') {
steps {
checkout([$class: 'GitSCM',
branches: [[name: "${params.BRANCH_TAG}"]],
doGenerateSubmoduleConfigurations: false,
extensions: [],
gitTool: 'Default',
submoduleCfg: [],
userRemoteConfigs: [[url: 'http://10.10.10.10/test/test-server.git',credentialsId: 'gitlab',]]
])
}
}
stage('构建包') {
agent {
docker {
image '192.168.0.10/base/maven:v3'
args '-v /opt/jenkins-data/_data/workspace/$JOB_NAME:/root/.m2 -v /root/mavenRepository:/usr/repository'
}
}
steps {
withSonarQubeEnv('SonarQube') {
sh 'cd /var/jenkins_home/workspace/$JOB_NAME/ && mvn clean install -am -Dmaven.test.skip=true -P inner sonar:sonar'
}
}
}
}
}
然后点击立即构建,看到是绿色的说明构建成功,然后返回SonarQube中首页查看,
表示代码分析成功了。