GitLab + SonarQube 构建代码检测平台:详细教程与实战指南
在现代软件开发流程中,代码质量的把控至关重要。为了实现高效、自动化的代码检测,许多团队选择搭建基于GitLab和SonarQube的代码检测平台。本文将详细介绍如何搭建这一平台,并通过实战案例展示其在项目中的应用。
基于 SonarQube 8.9 搭建,SonarQube 代码质量管理工具,本文侧重讲解 SonarQube 安装配置,GitLab、GitLab Runner 安装:参照 GitLab安装部分。
安装配置 SonarQube
SonarQube是一款 widely used 代码质量管理工具,而GitLab则是一款 popular 的代码托管平台。通过将两者结合,可以实现代码的自动检测和质量管控。本文基于SonarQube 8.9版本进行搭建,该版本仅支持PostgreSQL数据库。
- 通过 Rancher 安装 PostgreSQL 9.6
- 通过 Rancher 安装 SonarQube 8.9
通过 Rancher 安装 PostgreSQL
通过 Rancher 安装 SonarQube
配置项目接入代码检测
Java项目配置(Maven)
- .gitlab-ci.yml配置:
在 .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 配置
在 .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社区版虽然功能强大,但仍有一些不足之处。我们可以通过自定义构建SonarQube镜像,添加必要的插件来完善其功能。具体步骤可参考:【Docker 构建自定义 SonarQube 镜像】
配置 GitLab 单点登录
高版本已经内嵌该功能,无需添加插件实现。
- 管理员登录 GitLab 配置-> 应用-> 创建应用。
- 管理员登录 SonarQube,点击 配置-> ALM集成-> GitLab,创建配置。
- 配置完成后,点击下方,Enable、GitLab地址、Application ID。
- 修改通用-> Server base URL为 SonarQube 地址。
导入 阿里代码规范 配置
在SonarQube中搜索并激活阿里代码规范(p3c),确保代码符合行业标准。
评论