如有转载声明原创
期望: 在开发提交代码后,SonarQube可以自动将gitlab或者github上的代码进行审核。
搭建组件:
- SonarQube + Postgresql (SonarQube 在7版本之后已经不再支持Mysql )
- Jenkins (相对于gitlab-runner,Jenkins功能更强大,跟gitlab、github耦合性低)
搭建步骤
- SonarQube + Postgresql 搭建
- 启动 docker-compose
docker-compose.yml 文件:
version: "3"
services:
postgres:
restart: always
image: postgres:11.5-alpine
container_name: dc_postgres
expose:
- "5432"
environment:
POSTGRES_PASSWORD: postgres
PGDATA: /var/lib/postgresql/data/pgdata
volumes:
- v_pg_data:/var/lib/postgresql/data/pgdata
adminer:
image: adminer
restart: always
ports:
- 8081:8080
sonarqube_zh:
restart: always
image: sonarqube:lts
container_name: dc_sonarqube
ports:
- 9000:9000
- 9092:9092
expose:
- "9000"
- "9002"
environment:
SONARQUBE_JDBC_USERNAME: postgres
SONARQUBE_JDBC_PASSWORD: postgres
SONARQUBE_JDBC_URL: jdbc:postgresql://dc_postgres:5432/sonar
volumes:
- v_sonarqube_data:/opt/sonarqube/data
- v_sonarqube_extensions:/opt/sonarqube/extensions
- v_sonarqube_logs:/opt/sonarqube/logs
depends_on:
- postgres
- adminer
jenkins:
image: jenkins/jenkins:lts
restart: always
container_name: dc_jenkins
volumes:
- v_jenkins_home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
ports:
- "8029:8080"
expose:
- "8080"
- "50000"
privileged: true
user: root
environment:
JAVA_OPTS: '-Djava.util.logging.config.file=/var/jenkins_home/log.properties'
volumes:
v_sonarqube_data:
v_sonarqube_extensions:
v_sonarqube_logs:
v_pg_data:
v_jenkins_home:
在 docker-compose.yml 文件目录下运行
docker-compose up -d (初次配置可以不添加 -d 参数)
- 配置 Postgresql
web 访问 http://服务器IP:8081, 登录PostgreSQL(账密:postgres/postgres),并创建 sonar 数据库
-
配置 SonarQube
- web 访问 http://服务器IP:9000,创建账号
- 生成免密登录token(这个token是给 Jenkins 使用的)
-
配置 Jenkins
web 访问 http://服务器IP:8029,并初始化 Administrator password1. 登录到Docker内部 sudo docker exec -it dc_jenkins bash cat /var/jenkins_home/secrets/initialAdminPassword 2. 拿到初始化密码后,登录Jenkins 3. 配置Jenkins,可以选择推荐配置 4. Manage Jenkins -> Manage Pluins -> Available -> SonarQube Scanner 安装重启 5. Manage Jenkins -> Configure System 配置 SonarQube servers 注意: SonarQube servers 下面的 Server authentication token 最开始无法选择, 先保存一下,然后点击ADD就有了。Jenkins Credentials Provider 下面的 Jenkins Kind 选择 Secret txt,在Secret 填写 SonarQube 生成的 token。
6. Manage Jenkins -> Global Tool Configuration -> SonarQube Scanner -> SonarQube Scanner Name字段填写 Jenkins
7. 创建项目: 点击 New Item
8. 配置项目 Source Code Management :选择 Git 填写Git 地址和认证信息 Build:填写 Analysis properties sonar.projectKey=Test sonar.projectName=Test sonar.projectVersion=1.0 soanr.sourceEncoding=UTF-8 soanr.language-go
9. 配置完成后,在Jenkins 内点击Test项目,Build Now, 然后在SonarQube 就可以看见审核内容了 10. 配置build 触发条件,然后配置GitLab web hooks