部署sonarqube
version: "3"
services:
sonarqube:
image: sonarqube:community
depends_on:
- db
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
volumes:
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_logs:/opt/sonarqube/logs
ports:
- "9000:9000"
db:
image: postgres:12
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
volumes:
- postgresql:/var/lib/postgresql
- postgresql_data:/var/lib/postgresql/data
ports:
- "5432:5432"
volumes:
sonarqube_data:
sonarqube_extensions:
sonarqube_logs:
postgresql:
postgresql_data:
在SonarQube社区版中,是只能有一个分支被扫描的,需要通过插件的形式来扩展这部分功能 或者直接安装带插件版本的sonarqube
打开插件地址,需要注意的是,不同的SonarQube版本使用的插件版本也不一样,我已经安装的SonarQube为9.6.0,所以下载的插件版本应该是1.12.0
下载完插件之后,上传到服务器的 /var/lib/docker/volumes/sonarqube_sonarqube_extensions/_data/plugins 目录下
进入容器
docker exec -it sonarqube /bin/bash
找到了/conf
目录下的sonar.properties文件,然后进行了修改
修改配置如下:
sonar.web.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.12.0.jar=web
sonar.ce.javaAdditionalOpts=-javaagent:./extensions/plugins/sonarqube-community-branch-plugin-1.12.0.jar=ce
此时重启SonarQube应该就是可以了。
在回到项目中,可以通过增加 -Dsonar.branch.name
参数来对不同分支的代码进行扫描
Jenkins集成sonarqube
jenkins上安装sonarqube scanner插件
这里手动为了兼容性选择较低的版本 plugins.jenkins.io/sonar/relea…
jenkins上关联sonarqube服务器
生成token 用于jenkins调用
jenkins拿到刚才的token创建令牌绑定
通过“系统管理->系统设置”配置SonarQube Server
勾上“Enable injection of SonarQube server configuration ...”选项,输入“Name”、“Server URL”以及“Server authentication token”。token为前面创建的令牌
配置SonarQube Scanner工具
进入“系统管理”-“全局工具配置”-“SonarQube Scanner”
sonarqube关联gitlab
gitalb上创建sonar的令牌
点击gitlab 填入刚才创建的令牌 这样以后就能从gitab生成项目