SonarQubePublish@6 从 SonarQubePrepare 以外的其他阶段运行时失败,并显示:“变量丢失”

问题描述 投票:0回答:1

我正在开发一个 Dev Azure 管道,该管道运行几个阶段,其中有准备声纳报告的任务。我想要关注的阶段的重要部分如下所示:

build_and_sonar_prepare:
    - task: SonarQubePrepare@6
      displayName: prepare_sonar
      inputs:
        SonarQube: ${{ parameters.SonarQube}}
        scannerMode: 'Other'
        
    - task: Bash@3
      displayName: scan_sonar
      inputs:
        targetType: 'inline'
        script: |
          mvn sonar:sonar other commands
        
sonar_publish:
     - task: SonarQubePublish@6
       inputs:
       pollingTimeoutSec: '300'

build_and_sonar_prepare 不是由我管理的,它是我正在重用的模板的一部分。它运行良好并生成正确的声纳报告,并链接到声纳服务器。 我控制的阶段是 sonar_publish,我只想发布结果,以便在 Azure Devops Pipeline 摘要中查看报告的结果(我为此创建了单独的问题:(Azure Devops Pipeline,显示链接)管道运行摘要页面上的声纳报告

这里发生的是

  1. SonarQubePrepare 正在通过与 SonarQube ${{parameters.SonarQube}} 的正确工作连接进行调用,该连接由 Azure 管理且工作正常。
  2. 正在调用 mvn sonar:sonar,而不是 SonarCubeAnalyze,不幸的是我无法更改它,因为它是模板的一部分
  3. SonarQubePublish@6 正在被调用,但来自另一个阶段

运行此管道后,我收到错误:

 ##[error]Variables are missing. Please make sure that you are running the Prepare and Analyze tasks before running the Publish task.

在调用“发布”之前,我尝试将 SonarCubeAnalyze 放入我的舞台中,但也失败了。我还确保声纳报告生成的所有文件都复制到 sonar_publish 的工作区中(在 build_and_sonar_prepare 阶段使用 CopyFiles@2 和 PublishBuildArtifacts@1 ,在 sonar_publish 阶段使用 CopyFiles@2 ) 到目前为止还没有成功。 我想知道是否可以使用此设置发布声纳报告? 我还想知道缺少哪些变量以及如何检查它们是否存在于 sonar_publish 阶段以及它们的值是多少?

azure azure-devops azure-pipelines sonarqube sonarqube-scan
1个回答
0
投票

您必须将

SonarQubePrepare@6
任务和
SonarQubePublish@6
任务放在同一个作业中。

SonarQubePrepare@6
任务用于在执行构建之前配置所有必需的设置,包括身份验证信息。该任务是“强制性”的,范围是当前工作。运行“sonar_publish”阶段时,它将在全新的代理上运行,因此不会包含上一阶段的 SonarQube 配置。 一些文档供您参考:

    代理池作业
  • SonarQube 和 Azure DevOps 集成
© www.soinside.com 2019 - 2024. All rights reserved.