我们刚刚更新到TFS 2017,我正在为我们的构建设置SonarQube integration into pull requests。在这个过程中,我遇到了一个我似乎无法弄清楚的问题。
我们有三个构建服务器,每个服务器上都有两组构建代理。我们称之为BA1和BA2。此外,我们正在为TFS使用新的SonarQube插件,而不是使用引用here的已弃用的插件。
BA2完美运作。生成增量分析报告和完整分析报告没有任何问题。但是,使用BA1的任何构建最终都会在失败前通过End Analysis步骤的一半,并显示类似于此的消息:
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
目录下的构建代理日志,但是找不到任何有用的东西。我已经没有想法检查了。感谢您的任何提示。
答案 0 :(得分:1)
原来,对于失败的版本,驱动器(E :)被格式化为FAT32 RAM驱动器。驱动器不满,但我们仍然对该驱动器施加某种限制,导致构建失败。
我不认为这是文件计数限制,因为我们从目录中删除了几个文件并尝试添加新文件,但我们不允许添加一个文件。当我删除batch-report
目录下的所有文件时,它最终允许我再次添加文件。我假设这是导致问题的某种目录大小限制。无论如何,我们没有浪费时间试图找出原因究竟是什么,而是将驱动器重新格式化为NTFS并且构建问题消失了。感谢大家的想法和提示。