在 Jenkins 2 Pipeline 中执行 SonarQube Scanner
Posted
技术标签:
【中文标题】在 Jenkins 2 Pipeline 中执行 SonarQube Scanner【英文标题】:Execute SonarQube Scanner within Jenkins 2 Pipeline 【发布时间】:2016-11-02 14:41:20 【问题描述】:我想在我的 Jenkins 2.x 管道中执行“SonarQube 扫描仪”步骤。
当我尝试在管道语法中创建示例 groovy 时,我只得到以下格式的 groovy 脚本:
step <object of type hudson.plugins.sonar.SonarRunnerBuilder>
有谁知道正确的步骤语法是什么?例如。发布 JUnit 报告的样子
step([$class: 'JUnitResultArchiver', testResults: ''])
我使用以下版本:
詹金斯 2.11 SonarQube 扫描仪 2.6.1 SonarQube 插件 2.4.1【问题讨论】:
SonarQube 插件 2.4.4 也不起作用 【参考方案1】:我想我明白了。 首先,您必须检索您的 SonarQube 扫描仪工具
def sonarqubeScannerHome = tool name: 'SonarQubeScanner', type: 'hudson.plugins.sonar.SonarRunnerInstallation'
然后就可以通过 Shell 调用 sonar-scanner:
sh "$sonarqubeScannerHome/bin/sonar-scanner -e -Dsonar.host.url=..."
【讨论】:
【参考方案2】:env.sonarHome= tool name: 'scanner-2.4', type: 'hudson.plugins.sonar.SonarRunnerInstallation'
withSonarQubeEnv('sonar.installation') // from SonarQube servers > name
sh "$sonarHome/bin/sonar-runner -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_AUTH_TOKEN -Dsonar.projectName=xxx -Dsonar.projectVersion=xxx -Dsonar.projectKey=xxx -Dsonar.sources=."
【讨论】:
这将需要 jenkins >= 2.5 和 sonarqube >= 5.2 的 sonarqube 插件【参考方案3】:相反,您可以只提供您的声纳运行器的完整路径。如下图sn-p所示。
def runSonarScan(sonar_url)
withEnv(['SONAR_HOST=' + sonar_url])
sh '''
$/opt/sonarqube/sonar-runner-2.4/bin/sonar-runner -e -Dsonar.host.url=$SONAR_HOST
'''
如果您有特定的声纳属性,请将它们添加为 sonar-project.properties 文件,如下所示Sonar Project Properties
【讨论】:
以上是关于在 Jenkins 2 Pipeline 中执行 SonarQube Scanner的主要内容,如果未能解决你的问题,请参考以下文章
在Jenkins2.X使用Pipeline执行python测试脚本
jenkins 2:用ssh agent插件在pipeline里实现scp和远程执行命令