首页 > 服务器管理 > GitLab集成SonarQube
2025
08-07

GitLab集成SonarQube

GitLab集成SonarQube使用和配置


1、界面设置为简体中文

通过管理页面安装汉化包

进入Administration菜单,选择Marketplace。找到Chinese Pack安装即可

4.PNG

2、普通用户添加:配置-权限-用户

1.PNG

3、从gitlab导入项目

选择“导入GitLab”

2.PNG

在gitlab中创建个人令牌,选择范围包含API和read_api

3.PNG

sonarqube中输入gitlab生成的个人令牌,就可以看到gitlab中的项目列表,选择一个项目

4、配置分析器,使用GitLab CI

①定义gitlab环境变量:SONAR_TOKEN和SONAR_HOST_URL

8.PNG

10.PNG

②根据指引创建配置sonar文件sonar-project.properties并粘贴projectKey配置,当然你也可以添加更多配置,这里的projectKey主要用于和sonarqube通信,不配置扫描会报权限问题。

11111111111111111111.PNG

③编辑.gitlab-ci.yml文件添加sonarqube扫描脚本,以下使用shell执行器

11.PNG

variables:
  SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"  # Defines the location of the analysis task cache
  GIT_DEPTH: "0"  # Tells git to fetch all the branches of the project, required by the analysis task

stages:
  - build-sonar


build-sonar:
  stage: build-sonar
  
  
  cache:
    policy: pull-push
    key: "sonar-cache-$CI_COMMIT_REF_SLUG"
    paths:
      - "${SONAR_USER_HOME}/cache"
      - sonar-scanner/
      
  script: 
  - sonar-scanner -Dsonar.host.url="${SONAR_HOST_URL}"
  allow_failure: true
  rules:
    - if: $CI_COMMIT_BRANCH == 'develop'

如果使用Shell执行器,需要在gitlab-runner所在主机上安装sonar-scanner:不然会遇到“sonar-scanner:未找到命令”(注意不要安装在sonar主机上)

# 下载并解压到 /opt
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.8.0.2856-linux.zip
unzip sonar-scanner-cli-*.zip -d /opt/
mv /opt/sonar-scanner-* /opt/sonar-scanner

# 设置环境变量
echo 'export SONAR_SCANNER_HOME="/opt/sonar-scanner"' >> ~/.bashrc
echo 'export PATH="$SONAR_SCANNER_HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

# 验证安装
sonar-scanner --version

特别注意:sonar-scanner的版本支持的java版本要和sonarqube的java版本一致,不然扫描会报版本兼容问题,具体可以参考下面链接选择适合的sonarscanner版本

https://docs.sonarsource.com/sonarqube-server/latest/analyzing-source-code/scanners/sonarscanner/


官方给出的例子使用docker执行器,自己可以尝试,前提是你的runner执行器是docker执行器。

image: 
  name: sonarsource/sonar-scanner-cli:11
  entrypoint: [""]

variables:
  SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"  # Defines the location of the analysis task cache
  GIT_DEPTH: "0"  # Tells git to fetch all the branches of the project, required by the analysis task

stages:
  - build-sonar


build-sonar:
  stage: build-sonar
  
  
  cache:
    policy: pull-push
    key: "sonar-cache-$CI_COMMIT_REF_SLUG"
    paths:
      - "${SONAR_USER_HOME}/cache"
      - sonar-scanner/
      
  script: 
  - sonar-scanner -Dsonar.host.url="${SONAR_HOST_URL}"
  allow_failure: true
  rules:
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
    - if: $CI_COMMIT_BRANCH == 'master'
    - if: $CI_COMMIT_BRANCH == 'main'
    - if: $CI_COMMIT_BRANCH == 'develop'

另外也可以根据自己情况决定是否单独创建配置文件sonar-project.properties来设置更多个性化配置

作者:admin
admin
TTF的家园-www.ttfde.top 个人博客以便写写东西,欢迎喜欢互联网的朋友一起交流!

本文》有 0 条评论

留下一个回复