SonarQube流水线扫描后,如何生成并发布Azure制品报告文件?
解决方案
1. 配置SonarQube生成本地JSON报告
在SonarQubePrepare@6任务的extraProperties中添加sonar.scanner.dumpReport=true,扫描完成后会在项目根目录的.scannerwork文件夹下生成report.json文件:
- task: SonarQubePrepare@6 inputs: SonarQube: 'my-azure-sonar-connection' scannerMode: 'my-name' configMode: 'manual' cliProjectKey: 'my-cli' extraProperties: | sonar.tests.inclusions=**/*.test.ts sonar.exclusions=**/node_modules/* sonar.scanner.dumpReport=true # 新增:开启本地JSON报告生成
2. 复制Sonar报告到制品 staging 目录
替换你之前错误的文件复制逻辑,直接复制生成的report.json到指定路径,还可按需重命名为sonar-report.json:
- task: PowerShell@2 inputs: targetType: 'inline' script: | # 创建目标目录 New-Item -ItemType Directory -Path "$(Build.ArtifactStagingDirectory)/report" -Force # 复制并重命名报告文件 Copy-Item -Path "$(Build.SourcesDirectory)/.scannerwork/report.json" -Destination "$(Build.ArtifactStagingDirectory)/report/sonar-report.json" -Force
3. 发布制品
修改发布任务,指向正确的报告路径,自定义制品名称便于识别:
- task: PublishBuildArtifacts@1 inputs: pathToPublish: '$(Build.ArtifactStagingDirectory)/report' artifactName: sonar-scan-report
完整流水线示例
整合后的完整jobs-sonar-scan.yaml:
jobs: - job: SonarAnalysis displayName: 'Sonar Analysis' steps: # Prepare Analysis Configuration task - task: SonarQubePrepare@6 inputs: SonarQube: 'my-azure-sonar-connection' scannerMode: 'my-name' configMode: 'manual' cliProjectKey: 'my-cli' extraProperties: | sonar.tests.inclusions=**/*.test.ts sonar.exclusions=**/node_modules/* sonar.scanner.dumpReport=true # 开启本地报告生成 # Run Code Analysis task - task: SonarQubeAnalyze@6 inputs: jdkVersion: 'JAVA_HOME_17_X64' # Publish Quality Gate Result task - task: SonarQubePublish@6 inputs: pollingTimeoutSec: '300' # 创建报告目录并复制Sonar JSON报告 - task: PowerShell@2 inputs: targetType: 'inline' script: | New-Item -ItemType Directory -Path "$(Build.ArtifactStagingDirectory)/report" -Force Copy-Item -Path "$(Build.SourcesDirectory)/.scannerwork/report.json" -Destination "$(Build.ArtifactStagingDirectory)/report/sonar-report.json" -Force # 发布Sonar报告制品 - task: PublishBuildArtifacts@1 inputs: pathToPublish: '$(Build.ArtifactStagingDirectory)/report' artifactName: sonar-scan-report
验证方式
流水线运行完成后,在Azure DevOps流水线摘要页面的“制品”区域,点击sonar-scan-report即可下载到sonar-report.json文件。
内容的提问来源于stack exchange,提问作者Andrei Mocanu
相关产品推荐
相关产品推荐

