GitLab + SonarQube 搭建自动代码检测平台
基于 SonarQube 8.9 搭建,SonarQube 代码质量管理工具,本文侧重讲解 SonarQube 安装配置,GitLab、GitLab Runner 安装:参照 GitLab安装部分。
安装配置 SonarQube
SonarQube 8.9 只支持,PostgreSQL 数据库。
- 通过 Rancher 安装 PostgreSQL 9.6
- 通过 Rancher 安装 SonarQube 8.9
通过 Rancher 安装 PostgreSQL
通过 Rancher 安装 SonarQube
配置项目接入代码检测
Java项目配置(Maven)
.gitlab-ci.yml
stages:
- quality
variables:
sonar_url: "http://172.0.0.1:9000"
sonar_token: "**********************"
# 功能分支、发布分支检测
sonar_feature_job:
stage: quality
script:
- mvn --batch-mode verify sonar:sonar
-Dsonar.host.url=$sonar_url -Dsonar.login=$sonar_token
-Dsonar.projectKey=$CI_PROJECT_NAME
-Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA
-Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
-Dsonar.gitlab.project_id=$CI_PROJECT_ID
-Dsonar.branch.name=$CI_COMMIT_REF_NAME
only:
- /^feat\/*/
- /^release\/*/
tags:
- mavenrunner01
# 对uat进行管控
sonar_uat_job:
stage: quality
script:
- mvn --batch-mode verify sonar:sonar
-Dsonar.host.url=$sonar_url -Dsonar.login=$sonar_token
-Dsonar.projectKey=$CI_PROJECT_NAME
-Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA
-Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
-Dsonar.gitlab.project_id=$CI_PROJECT_ID
-Dsonar.branch.name=$CI_COMMIT_REF_NAME
only:
- uat
tags:
- mavenrunner02
# 对生产环境进行管控
sonar_master_job:
stage: quality
script:
- mvn clean install -Dmaven.test.skip=true
- mvn --batch-mode verify sonar:sonar
-Dsonar.host.url=$sonar_url -Dsonar.login=$sonar_token
-Dsonar.projectKey=$CI_PROJECT_NAME
-Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA
-Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
-Dsonar.gitlab.project_id=$CI_PROJECT_ID
-Dsonar.branch.name=$CI_COMMIT_REF_NAME
only:
- master
- prod
tags:
- mavenrunner03
**修改pom.xml,**锁定 sonar-maven-plugin 插件版本号。
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.7.0.1746</version>
</plugin>
</plugins>
前端项目配置(Vue)
.gitlab-ci.yml
stages:
- quality
variables:
sonar_url: "http://172.0.0.155:9000"
sonar_token: "**********************"
# 功能分支、发布分支检测
sonar_feature_job:
stage: quality
script:
- rm -rf .scannerwork/
- sonar-scanner -Dsonar.host.url=$sonar_url -Dsonar.login=$sonar_token
-Dsonar.sources=.
-Dsonar.inclusions=src/**
-Dsonar.exclusions=/node_modules/
-Dsonar.projectKey=$CI_PROJECT_NAME
-Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA
-Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
-Dsonar.gitlab.project_id=$CI_PROJECT_ID
-Dsonar.branch.name=$CI_COMMIT_REF_NAME
only:
- /^feat\/*/
- /^release\/*/
tags:
- runnernodejs01
# 对uat进行管控
sonar_uat_job:
stage: quality
script:
- rm -rf .scannerwork/
- sonar-scanner -Dsonar.host.url=$sonar_url -Dsonar.login=$sonar_token
-Dsonar.sources=.
-Dsonar.inclusions=src/**
-Dsonar.exclusions=/node_modules/
-Dsonar.projectKey=$CI_PROJECT_NAME
-Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA
-Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
-Dsonar.gitlab.project_id=$CI_PROJECT_ID
-Dsonar.branch.name=$CI_COMMIT_REF_NAME
only:
- uat
tags:
- runnernodejs02
# 对生产环境进行管控
sonar_master_job:
stage: quality
script:
- rm -rf .scannerwork/
- sonar-scanner -Dsonar.host.url=$sonar_url -Dsonar.login=$sonar_token
-Dsonar.sources=.
-Dsonar.inclusions=src/**
-Dsonar.exclusions=/node_modules/
-Dsonar.projectKey=$CI_PROJECT_NAME
-Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA
-Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
-Dsonar.gitlab.project_id=$CI_PROJECT_ID
-Dsonar.branch.name=$CI_COMMIT_REF_NAME
only:
- master
- prod
tags:
- runnernodejs03
扩展社区版功能
社区版存在部分不足,我们可以自定义构建SonarQube镜像,添加部分插件完善。详情可看:【Docker 构建自定义 SonarQube 镜像】
配置 GitLab 单点登录
高版本已经内嵌该功能,无需添加插件实现。
- 管理员登录 GitLab 配置-> 应用-> 创建应用。
- 管理员登录 SonarQube,点击 配置-> ALM集成-> GitLab,创建配置。
- 配置完成后,点击下方,Enable、GitLab地址、Application ID。
- 修改通用-> Server base URL为 SonarQube 地址。
导入 阿里代码规范 配置
直接在 规则搜索 p3c 点击激活即可。
评论