当前位置: 首页 > 知识库问答 >
问题:

Sonarqube-Gitlab与声纳扫描仪的集成问题。属性文件

茅高卓
2023-03-14

我在GitLab中有两个项目,我正在尝试将SonarQube与我的GitLab项目集成。

我增加了“声纳扫描仪”。属性的文件保存到Project1,如下所示:

sonar-scanner.properties

# SonarQube server
# sonar.host.url & sonar.login are set by the Scanner CLI.
# See https://docs.sonarqube.org/latest/analysis/gitlab-cicd/.
# Project settings.
sonar.projectKey=Trojanwall
sonar.projectName=Trojanwall
sonar.projectDescription=My new interesting project.
sonar.links.ci=https://gitlab.com/rmesi/trojanwallg2-testing/-/pipelines
#sonar.links.issue=https://gitlab.com/rmesi/trojanwallg2-testing/

# Scan settings.
sonar.projectBaseDir=./
#sonar.sources=./
sonar.sources=./
sonar.sourceEncoding=UTF-8
sonar.host.url=http://sonarqube.southeastasia.cloudapp.azure.com:31000
sonar.login=4f4cbabd17914579beb605c3352349229b4fd57b

#sonar.exclusions=,**/coverage/**

# Fail CI pipeline if Sonar fails.
sonar.qualitygate.wait=true

然后我在gitlab-ci.yml文件中添加了声纳扫描仪作业:

gitlab-ci.yml

sonar-scanner-trojanwall:
  stage: sonarqube:scan


  image:
    name: sonarsource/sonar-scanner-cli:4.5
    entrypoint: [""]
  variables:
    # Defines the location of the analysis task cache
    SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"
    # Shallow cloning needs to be disabled.
    # See https://docs.sonarqube.org/latest/analysis/gitlab-cicd/.
    GIT_DEPTH: 0
  cache:
    key: "${CI_JOB_NAME}"
    paths:
      - .sonar/cache
  script:
    - sonar-scanner

  only:
    - Production
    - /^[\d]+\.[\d]+\.1$/  
  when: on_success    

之后,我配置了两个变量:SONAR_HOST_URL和SONAR_TOKEN,然后运行管道。它在项目1中运行得非常好。

然后,我也需要为项目2做同样的事情。我需要声纳扫描仪进入项目2,扫描和分析。为此,我在SonarQube中创建了另一个带有新令牌的项目。

我需要这样配置:当项目1的管道被触发时,它会扫描项目1和项目2。

为此,我在Project1的管道中添加了另一项工作。内容如下:

gitlab-ci.yml

sonar-scanner-test-repo:
  stage: sonarqube:scan
  trigger:
    include:
    - project: 'rmesi/test-repo'
      ref: master
      file: 'sonarscanner.gitlab-ci.yml'

  only:
    - Production
    - /^[\d]+\.[\d]+\.1$/  
  when: on_success

我试图在项目2中设置一个下游管道来触发yaml文件。因此,当项目1中的管道被触发并且作业“sonar scanner test repo”被触发时,项目2中的另一个yaml文件将作为下游管道运行。该YAML文件如下所示:

sonarscanner.gitlab-ci.yml

stages:
  - sonarqube:scan

variables: 
  CI_PROJECT_DIR: /builds/rmesi/test-repo


sonar-scanner:
  stage: sonarqube:scan
  image:
    name: sonarsource/sonar-scanner-cli:4.5
    entrypoint: [""]
  variables:
    # Defines the location of the analysis task cache
    SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"
    # Shallow cloning needs to be disabled.
    # See https://docs.sonarqube.org/latest/analysis/gitlab-cicd/.
    GIT_DEPTH: 0
  cache:
    key: "${CI_JOB_NAME}"
    paths:
      - .sonar/cache
  script:
    - cd /builds/rmesi/
    - git clone https://gitlab.com/rmesi/test-repo.git test-repo
    - sonar-scanner

然后我加上了"声纳工程"。Project2中的属性文件,如下所示:

sonar-project.properties

# SonarQube server

# sonar.host.url & sonar.login are set by the Scanner CLI.
# See https://docs.sonarqube.org/latest/analysis/gitlab-cicd/.

# Project settings.
sonar.projectKey=test-repo
sonar.projectName=test-repo
sonar.projectDescription=My new interesting project.
sonar.links.ci=https://gitlab.com/rmesi/test-repo/-/pipelines
#sonar.links.issue=https://gitlab.com/rmesi/test-repo/

# Scan settings.
sonar.projectBaseDir=/builds/rmesi/test-repo/
sonar.sources=/builds/rmesi/test-repo/, ./
sonar.sourceEncoding=UTF-8
sonar.host.url=http://sonarqube.southeastasia.cloudapp.azure.com:31000
sonar.login=b0c40e44fd59155d27ee43ae375b9ad7bf39bbdb

#sonar.exclusions=,**/coverage/**

# Fail CI pipeline if Sonar fails.
sonar.qualitygate.wait=true

问题是,当下游管道运行时,我收到以下错误消息

我发现下游管道没有定位“声纳扫描仪”。项目2中的属性。(第68和74行)

其中,在项目1上搜索此步骤时,它显示:

INFO:项目根配置文件: /builds/rmesi/trojanwallg2-testing/sonar-project.properties

但在项目2中,它不起作用。

有人知道怎么解决这个问题吗?

共有1个答案

鲜于德泽
2023-03-14

我自己找到了解决办法。

需要添加

“-cd/build/rmesi/test repo;声纳扫描仪”

在'sonarscanner.gitlab-ci.yml'文件的作业的脚本部分中。

这样,跑步者就可以直接映射到所需的目录,并在那里执行“sonar scanner”命令。

 类似资料:
  • 我有一个CI工作流,它集成了一个linting作业和一个代码质量作业。我的Linting工作是docker runner从应用程序代码启动我的eslint脚本。然后,我的代码质量工作应该是启动一个sonar scanner docker实例,检查我的代码并将报告发送回sonarqube实例。 问题主要在于我无法使用以下两种解决方案正确启动声纳扫描仪: Sonar Scanner Dockerhtt

  • 我尝试使用Jenkins上的java项目运行声纳分析,使用标准的maven sonar:sonar goal,并使用post STEP>>Execute SonarQube Scanner。我使用的maven目标是。 对于SonarQube扫描仪,我使用了下面的maven目标 SonarQube版本-7.7声纳扫描仪版本-3.3.0 Jenkins版本-2.164.3 Maven版本-3.6.1

  • 我应该在属性文件中添加什么以便它包括。模块文件?

  • 声纳扫描仪在运行扫描仪时抛出空指针异常。错误指向一个枚举。它实现了一个典型的接口。 我记得几个月前运行扫描仪时没有出现任何问题,但这次不同了,感谢您的帮助。 添加了一些乱码,我可以保证没有编译问题。 包括声纳项目属性。#所需元数据sonar.project密钥=com.companysonar.project名称=项目sonar.project版本=1.0

  • 我有java项目(非梯度),想要测试Sonarqube。所以,我安装了sonar-scanner for mac(https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/)我如何使用它扫描我的Java项目? 我的项目结构是:src->main-java->COM->MyCompany>PackageName1->[java文件]sr