我们的 Azure Devops 构建管道 yaml 中的 SonarQube 代码分析任务因默认位置的存储问题而失败

The SonarQube code analysis task in our Azure Devops build pipeline yaml getting failed with storage issue in default location

问题:- 我们的 Azure Devops 构建管道 yaml 中的 SonarQube 代码分析任务失败并出现以下错误。

我们尝试了什么:我们的 AzureDevops 管道中有 SonarQube 分析任务 yaml,并且有一个 Maven 任务使用“干净验证”目标,然后是 sonarqube 任务。当我们执行这个时,maven 任务 getyting 失败并出现以下错误。

Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.8.0.2131:sonar on project: Unable to load component interface org.sonar.api.utils.TempFolder: Failed to create temporary folder in /home/vowne/.sonar: /home/vowne/.sonar/.sonartmp_xxxxxxx: No space left on device.

不确定 sonarqube 从哪里获取位置。它现在采用用户主目录。 /home/vowne。我们在其他位置有足够的 space,需要将 sonarqube 临时位置更改到那里。

我们可以在 maven 任务或 sonar 任务中添加一些东西来更改这个临时文件的位置吗?

- task: SonarQubePrepare@4
    inputs:
      SonarQube: 'Sonarqube'
      ScannerMode: 'Other'
      extraProperties: |
          sonar.projectName=${{ parameters.myName }}
          sonar.coverage.xxxxxx.xmlReportPaths=$(System.DefaultWorkingDirectory)/xxxxxxx/xxxxxx/site/xxxxx/xxxxx.xml

这里我们可以添加一个额外的 属性 到声纳任务,例如 sonar.userHome=$(System.DefaultWorkingDirectory)

或者 Maven 任务需要将“目标”从“干净验证”更改为一些自定义值。

根据source code,此路径派生自以下属性:

  • sonar.globalWorking.directory系统属性(如果不是绝对的,则相对于下面的设置解决),
  • sonar.userHome系统属性,
  • SONAR_USER_HOME环境变量,
  • .sonar目录下user.home系统属性.

看来最后一个案例符合你的场景。尝试将上述设置之一设置为 select 不同的位置,而不是 ~/.sonar