使用docker安装SonarQube
安装数据库
docker run -d --restart=always --name postgresql -e POSTGRESQL_USERNAME=sonar -e POSTGRESQL_PASSWORD=admin@123 -e POSTGRESQL_DATABASE=sonar -p 5432:5432 bitnami/postgresql:11.7.0-debian-10-r55
安装SonarQube
docker run -d --restart=always --name sonarqube -p 9000:9000 -e SONAR_JDBC_URL=jdbc:postgresql://192.168.116.128:5432/sonar -e SONAR_JDBC_USERNAME=sonar -e SONAR_JDBC_PASSWORD=admin@123 -v /opt/sonarqube/conf:/opt/sonarqube/conf -v /opt/sonarqube/data:/opt/sonarqube/data -v /opt/sonarqube/extensions:/opt/sonarqube/extensions -v /opt/sonarqube/logs:/opt/sonarqube/logs sonarqube:8.9.6-community
使用admin/admin登录,首次登录需要修改密码。
安装Community Branch Plugin插件
1、下载对应版本的Community Branch Plugin插件,我们使用的sonarqube:8.9.6-community
,因此下载对应的1.8.1版本的插件。
SonarQube Version | Plugin Version |
---|---|
9.1+ | 1.10.0 |
9.0 | 1.9.0 |
8.9 | 1.8.1 |
8.7 - 8.8 | 1.7.0 |
8.5 - 8.6 | 1.6.0 |
8.2 - 8.4 | 1.5.0 |
8.1 | 1.4.0 |
7.8 - 8.0 | 1.3.2 |
7.4 - 7.7 | 1.0.2 |
2、将下载的jar包放到拷贝到/opt/sonarqube/extensions/plugins
目录。
3、添加sonar.web.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.8.1.jar=web
和sonar.ce.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.8.1.jar=ce
到/opt/sonarqube/conf/sonar.properties
。
4、重启SonarQube,接受关于使用第三方插件的警告。
5、检查安装情况,查看插件配置,进入Administration—>General Settings—>Housekeeping
。发现没有如下所的插件配置。

6、参考:https://github.com/mc1arke/sonarqube-community-branch-plugin/issues/522,我在sonarqube的启动命令
docker run
中加了-e sonar.web.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.8.1.jar=web -e sonar.ce.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.8.1.jar=ce
,重新run后插件生效。完整启动命令:
docker run -d --restart=always --name sonarqube -p 9000:9000 -e SONAR_WEB_JAVAADDITIONALOPTS=-javaagent:/opt/sonarqube/extensions/plugins/sonarqube-community-branch-plugin-1.8.1.jar=web -e SONAR_CE_JAVAADDITIONALOPTS=-javaagent:/opt/sonarqube/extensions/plugins/sonarqube-community-branch-plugin-1.8.1.jar=ce -e SONAR_JDBC_URL=jdbc:postgresql://192.168.116.128:5432/sonar -e SONAR_JDBC_USERNAME=sonar -e SONAR_JDBC_PASSWORD=admin@123 -v /opt/sonarqube/conf:/opt/sonarqube/conf -v /opt/sonarqube/data:/opt/sonarqube/data -v /opt/sonarqube/extensions:/opt/sonarqube/extensions -v /opt/sonarqube/logs:/opt/sonarqube/logs sonarqube:8.9.6-community
如何使用
参考:https://www.jianshu.com/p/bed574ae9ccc,在jenkinsfile中的sonar-scanner指定sonar.branch.name = <branch_name>
分支名,如下
node('openjdk8') {
def sonar_home = tool name: 'sonar-scanner-4.6.2'
withEnv(["PATH+bin=${sonar_home}/bin:/usr/local/bin:/usr/bin:/bin"]) {
stage('拉取代码') {
git credentialsId: 'github', url: 'https://github.com/Shawn1yao/jenkins_pipeline_java_maven.git'
}
stage('代码审查'){
withSonarQubeEnv('sonarqube-8.9.6') {
sh "sonar-scanner -Dsonar.java.binaries=src -Dsonar.projectKey=myproject -Dsonar.sources=src -Dsonar.host.url=http://192.168.116.128:9000/ -Dsonar.branch.name=release-20220210"
}
}
stage('阈值判断') {
timeout(30) { waitForQualityGate abortPipeline: true }
}
}
}
流水线执行完毕后,登录sonarqube平台查看。

网友评论