使用 GitLab 结合 SonarQube 搭建自动化代码检测平台

构建一个自动化的代码质量检测平台对于维护代码质量和团队协作至关重要。在本文中,我们将探究如何使用 GitLab CI/CD 与 SonarQube 相结合来实现这一目标。

前言

GitLab 是一个开源的代码仓库管理系统,提供了强大的持续集成(CI)工具。SonarQube 是一个开源的代码质量管理平台,可以持续地检查代码质量并提供详尽的代码质量报告。

结合这两个工具,我们可以自动化地检测代码中的问题,从而保证代码的健康和质量。

环境准备

为了开始我们的设置,需要确保以下组件已经准备就绪:

  1. GitLab 账户和一个项目。 gitlab官网安装指南: https://about.gitlab.com/install/#centos-7 1.1 添加gitlab的yum源仓库:
[root@gitlab ~]# curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

1.2 安装gitlab

[root@gitlab ~]#  yum  -y  install  gitlab-ce

1.3 配置 配置gitlab,设置配置文件/etc/gitlab/gitlab.rb 中的 external_url 修改成本机ip+端口

1.4 重载配置生效,然后重启服务

[root@gitlab ~]# gitlab-ctl reconfigure
[root@gitlab ~]# gitlab-ctl restart

1.5 访问ip+端口

用户名root,首次登陆需设定密码

  1. SonarQube 服务器已经搭建并运行。 2.1 官方下载地址: https://www.sonarsource.com/products/sonarqube/downloads/ 前置条件: 已安装 JDK1.8 环境 已安装 Maven(用于后期与 SonarQube、JaCoCo 的集成)

2.2 安装和启动

我本机是linux,进入到bin/linux-x86-64/ 执行sonar.sh,注意:sonar服务依赖于elasticsearch,不能使用root用户启动 默认的访问地址是:ip+端口9000,默认用户是admin+admin

  1. Runner 已在 GitLab 中注册并且是活跃的。

不同环境下的安装:

 # Linux x86-64
 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

 # Linux x86
 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386

 # Linux arm
 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm

下载对应平台的二进制运行文件,并保存命名到/usr/local/bin/gitlab-runner 权限设置:

chmod +x /usr/local/bin/gitlab-runner

安装和启动

gitlab-runner install  --working-directory=/home/gitlab-runner
gitlab-runner start

设置runner环境,需要在gitlab项目中进行注册,进入项目后,在设置、cicd里面,点击Runner

步骤概览

将整个过程分为以下几个步骤:

  1. 配置 SonarQube
  2. 设置 GitLab CI/CD
  3. 配置 GitLab Runner
  4. 编写 .gitlab-ci.yml 文件
  5. 测试和验证

步骤详解

1. 配置 SonarQube

首先,需要在 SonarQube 中为你的项目创建一个新的项目。创建后,SonarQube 会提供项目的 KeyToken,这些信息将在后续步骤中用到。

2. 设置 GitLab CI/CD

在 GitLab 项目的设置中,找到 CI / CD 配置,并添加环境变量:

  • SONARQUBE_URL:设置为你的 SonarQube 服务器地址。
  • SONARQUBE_TOKEN:使用刚才在 SonarQube 中生成的 Token。

3. 配置 GitLab Runner

确保您的 GitLab Runner 能够执行 Docker 命令,并且已经注册到你的 GitLab 中。

4. 编写 .gitlab-ci.yml 文件

创建或更新你项目中的 .gitlab-ci.yml 文件,添加以下内容:

stages:
  - test
  - quality

sonarqube-check:
  stage: quality
  image: 
    name: sonarsource/sonar-scanner-cli:latest
    entrypoint: [""]
  variables:
    GIT_DEPTH: "0"
  script:
    - sonar-scanner -Dsonar.projectKey=your_project_key -Dsonar.sources=./src -Dsonar.host.url=$SONARQUBE_URL -Dsonar.login=$SONARQUBE_TOKEN
  only:
    - master
    - merge_requests

请确保替换 your_project_key 为你的 SonarQube 项目密钥,./src 为你的源代码目录。

5. 测试和验证

提交 .gitlab-ci.yml 文件到你的 GitLab 项目,这将触发 CI/CD 流程。流程结束后,你可以在 SonarQube 的仪表板上看到一个全面的代码质量报告。

总结

通过使用 GitLab 结合 SonarQube,我们可以自动化代码质量检测,这对于维持高质量的代码库和提高开发效率极为有用。每次提交或合并请求都会触发 SonarQube 分析,确保新代码不会降低现有代码库的质量。

打 赏