SonarQube&Gitlab-CI 实现静态代码分析
part 1:基础配置
一.背景介绍
SonarQube® is an automatic code review tool to detect bugs, vulnerabilities and code smells in your code.
Sonar 为代码的质量管理提供了一个平台,对传统的代码静态检测如 PMD、FindBugs 等工具进行整合,可以说是目前最强大的代码质量管理工具之一。SonarQube 支持 25+语言,可以跟 CI/CD 集成。
二.SonarQube 平台搭建
1.使用 docker 拉取镜像
docker pull postgres //拉取数据库
docker pull sonarqube //拉取 sonarqube
2.启动服务
docker run --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres //启动数据库
docker run -d --name sonarqube
-p 9000:9000
-e sonar.jdbc.username=sonar
-e sonar.jdbc.password=sonar
-e sonar.jdbc.url=jdbc:postgresql://localhost/sonar
sonarqube //启动 sonarqube
如果需要特殊的配置可以选择绑定挂载卷,命令如下
docker run -d --name sonarqube
-p 9000:9000
-v /path/to/conf:/opt/sonarqube/conf
-v /path/to/data:/opt/sonarqube/data
-v /path/to/logs:/opt/sonarqube/logs
-v /path/to/extensions:/opt/sonarqube/extensions
sonarqube
3.访问 sonarqube
本地搭建的访问: https://localhost:9000 账号:admin,密码:admin
三.GitLab-CI&GitLab-Runner
在我们的项目中使用 GitLab 进行源码控制,GitLab-CI 就是一套配合 GitLab 使用的持续集成系统。GitLab-Runner 是配合 GitLab-CI 进行使用的。在 gitlab 中每个 project 都会配置 ci 的脚本。也就是当有 develop pull 了代码到 repo,gitlab 会通知 gitlab-ci,gitlab-ci 又会通知到相对应的 Runner,这时候 Runner 会去执行相对应的 script。
gitlab runner 可以配置多个,在不同的机器上也可以在同一个机器配置多个 runner.
gitlab-runner 安装:https://docs.gitlab.com/runner/install/linux-repository.html
四.Gradle 项目配置
build.gradle 配置
本地执行命令: gradle sonar
与 CI 集成,.gitlab-ci.yml 配置
五.结果展示
part 2:CI 配置优化
当项目刚引入 sonar 往往会有很多的 issues,而 developer 有不会一次性的消化掉这些 issues。对于 ci 我们不希望有新的 issues,此时希望有新的 issues 的时候 pipeline 会失败。这时候我们可以通过 api 取回 scan 的结果。
sonar_ci.sh script
.gitlab-ci.yml script
参考:
https://hub.docker.com/_/sonarqube/
https://docs.gitlab.com/ee/ci/yaml/README.html
https://plugins.gradle.org/plugin/org.sonarqube
版权声明: 本文为 InfoQ 作者【夏兮。】的原创文章。
原文链接:【http://xie.infoq.cn/article/d4774971b8349730507e3e7ea】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论