我在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中,它不起作用。
有人知道怎么解决这个问题吗?
我自己找到了解决办法。
需要添加
“-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