【问题标题】:SonarQube - unable to write message errorSonarQube - 无法写入消息错误
【发布时间】:2017-05-26 22:23:58
【问题描述】:

我们刚刚更新到 TFS 2017,我正在为我们的构建设置 SonarQube integration into pull requests。在这个过程中,我遇到了一个我似乎无法弄清楚的问题。

我们有三个构建服务器,每个服务器上都有两组构建代理。我们称它们为 BA1 和 BA2。此外,我们正在为 TFS 使用新的 SonarQube 插件,而不是引用 here 的已弃用插件。

BA2 完美运行。在生成增量分析报告和完整分析报告方面没有遇到任何问题。但是,任何使用 BA1 的构建最终都会使其在结束分析步骤的一半左右失败,并显示类似以下的消息:

ERROR: Error during SonarQube Scanner execution
org.sonar.core.util.ContextException: Unable to write message | file=E:\workingDirectory\_work\3\.sonarqube\out\.sonar\batch-report\component-5072.pb

... //long stacktrace

Caused by: java.io.FileNotFoundException: E:\workingDirectory\_work\3\.sonarqube\out\.sonar\batch-report\component-5072.pb (The directory or file cannot be created)

我很确定这不是权限问题,因为所有构建都在同一个用户帐户下运行。它运行在哪个项目或构建服务器上并不重要。使用 BA2 运行的所有作业都是成功的。使用 BA1 运行的所有作业都会因此错误而失败。我看到了一个类似的问题here,但该问题的解决方案对我不起作用。我对另一个工作排队到同一个工作区没有问题。

只是想看看之前是否有人遇到过这种情况。我检查了_diag 目录下的构建代理日志,但找不到任何有用的东西。我已经没有想法可以检查了。感谢您的任何提示。

【问题讨论】:

  • 能分享一下BA1和BA2的.agent文件吗?特别要验证他们没有使用相同的 workingDirectory(即 e:\workingDirectory)
  • BA1和BA2在配置上是一样的吗,有没有在目录下找到一些pb文件?
  • 如果您配置另一个构建代理,能否重现此问题?
  • @Jeroen 据我所知,唯一的区别是所有 BA1 构建的工作空间都在 E: 驱动器上,而 BA2 的工作空间在 D: 驱动器上。所以 BA1 的工作空间类似于 E:\tfs-build01-agent1\_work\ ,而 BA2 是 `D:\tfs-build01-agent2_work`。我还没有尝试配置另一个代理。我可以试试看是否有帮助。我只是很困惑为什么它不再工作了。在我们更新 TFS 之前,无论使用何种代理,它都可以正常工作。
  • 另外,我可以在日志中看到一些项目正在写入.sonarqube\out\.sonar 目录,但它看起来像是第一次尝试将.pb 文件写入.sonarqube\out\.sonar\batch-report 目录使用 BA1 失败。

标签: tfs msbuild sonarqube azure-devops


【解决方案1】:

事实证明,对于失败的构建,驱动器 (E:) 被格式化为 FAT32 RAM 驱动器。驱动器未满,但我们仍然在该驱动器上达到某种限制,导致构建失败。

我认为这不是文件数限制,因为我们从目录中删除了几个文件并尝试添加一个新文件,但它不允许我们添加一个。当我删除batch-report 目录下的所有文件时,它终于允许我再次添加文件。我假设这是导致问题的某种目录大小限制。无论如何,与其浪费时间试图找出究竟是什么原因,我们将驱动器重新格式化为 NTFS,构建问题就消失了。感谢大家的想法和提示。

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 2022-12-28
    • 2020-04-20
    • 2018-06-20
    • 2018-09-19
    • 2016-08-27
    • 1970-01-01
    • 2020-11-30
    • 2020-10-09
    相关资源
    最近更新 更多