如何为 SonarQube 扫描配置 Jenkins 管道 [英] How to configure a Jenkins Pipeline for SonarQube scan
问题描述
我正在尝试为我的项目配置 jenkins 管道,但如果有人能指出我做错了什么,这里缺少一些东西:
I am trying to configure a jenkins pipeline for my project, but there is something missing here, if anyone could direct on what I am doing wrong:
下面是流水线脚本:
node {
stage('SonarQube analysis') {
// requires SonarQube Scanner 2.8+
def scannerHome = tool 'sonarScanner';
withSonarQubeEnv('SonarQube 6.2') {
bat "${scannerHome}/bin/sonar-runner.bat"
}
}
}
下面是Jenkins Sonar Plugin相关配置:在 Manage Jenkins >配置系统
:
Below is the Jenkins Sonar Plugin related configurations:
Under Manage Jenkins > Configure System
:
在 管理 Jenkins >全局工具配置
以下是我得到的错误:
D:jenkinsworkspaceTest_Pipeline>D:sonar-runner-2.4/bin/sonar-runner.bat
D:sonar-runner-2.4
SonarQube Runner 2.4
Java 1.8.0_92 Oracle Corporation (64-bit)
Windows Server 2008 R2 6.1 amd64
INFO: Runner configuration file: D:sonar-runner-2.4confsonar-runner.properties
INFO: Project configuration file: NONE
INFO: Default locale: "en_US", source code encoding: "UTF-8"
INFO: Work directory: D:jenkinsworkspaceTest_Pipeline..sonar
INFO: SonarQube Server 6.2
19:48:53.627 INFO - Load global repositories
19:48:53.920 INFO - Load global repositories (done) | time=298ms
19:48:53.951 WARN - Property 'sonar.jdbc.url' is not supported any more. It will be ignored. There is no longer any DB connection to the SQ database.
19:48:53.951 WARN - Property 'sonar.jdbc.username' is not supported any more. It will be ignored. There is no longer any DB connection to the SQ database.
19:48:53.951 WARN - Property 'sonar.jdbc.password' is not supported any more. It will be ignored. There is no longer any DB connection to the SQ database.
19:48:53.951 INFO - User cache: C:UsersAdministrator.sonarcache
19:48:54.378 INFO - Load plugins index
19:48:54.378 INFO - Load plugins index (done) | time=0ms
19:48:55.235 INFO - Process project properties
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 3.404s
Final Memory: 5M/120M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
ERROR: Unable to execute Sonar
ERROR: Caused by: You must define the following mandatory properties for 'Unknown': sonar.projectKey, sonar.sources
ERROR:
ERROR: To see the full stack trace of the errors, re-run SonarQube Runner with the -e switch.
ERROR: Re-run SonarQube Runner using the -X switch to enable full debug logging.
[Pipeline] }
[Pipeline] // wrap
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 1
Finished: FAILURE
问题似乎是 Jenkins 不知道我的 sonar-project.properties 放在哪里.它位于 D:myprj 下,内容如下:
The problem seems that Jenkins does not know where my sonar-project.properties is placed. It is under D:myprj and has contents as below:
# required metadata
sonar.projectKey=my_prj:my_prj
sonar.projectName=my_prj
sonar.projectVersion=1.00
sonar.sources=my_prj/src
sonar.language=java
请建议我如何让 Jenkins 管道了解 sonar-project.properties 文件的放置位置
Pls suggest how I can make Jenkins pipeline aware of where the sonar-project.properties file is placed
推荐答案
我需要将工作区添加到我的脚本中.这是下面的脚本:
I needed to add the workspace to my script. Here is the script below:
stage('SonarQube analysis') {
ws('D:\my_prj') {
// requires SonarQube Scanner 2.8+
def scannerHome = tool 'sonarScanner';
withSonarQubeEnv('SonarQube 6.2') {
bat "${scannerHome}/bin/sonar-scanner.bat"
}
}
}
这篇关于如何为 SonarQube 扫描配置 Jenkins 管道的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!