Android构建缓存锁定文件触发Jenkins构建

时间:2018-12-04 16:24:55

标签: windows jenkins gradle android-gradle android-build

我们在Windows的Jenkins下运行每晚生成的版本,其中包括一个Android应用程序。詹金斯(Jenkins)调用运行我们大部分构建的Ant,并在构建的一部分过程中,蚂蚁调用Gradle构建(或测试)我们的Android应用。

大多数情况下,它可以正常工作,但是我们看到一些间歇性故障,因为在我们尝试构建Android App时,Android构建缓存被锁定了。这是最近的错误:

 [exec] :app:transformClassesWithStackFramesFixerForDebug FAILED
 [exec] 82 actionable tasks: 77 executed, 5 up-to-date
 [exec] 
 [exec] FAILURE: Build failed with an exception.
 [exec] 
 [exec] * What went wrong:
 [exec] Execution failed for task ':app:transformClassesWithStackFramesFixerForDebug'.
 [exec] > com.android.build.api.transform.TransformException: java.io.UncheckedIOException: java.nio.file.FileSystemException: C:\Users\console\.android\build-cache\3.1.2.lock: The process cannot access the file because it is being used by another process.

当然,当我登录到Jenkins服务器时,没有任何东西持有该锁(锁文件仍然存在),如果我重新运行Jenkins构建,它将通过。

我见过的大多数解决方案都是“清除缓存”类型的答案,这将适用于持久性锁定问题(我们是间歇性的),但不会阻止问题再次出现。如果构建被取消或崩溃,这将很有用,但这不是这种情况。

另一个不好的选择是禁用构建缓存,但是这样我们就失去了拥有构建缓存的性能优势。

我强烈怀疑这是Windows文件系统的问题,该文件系统实际上不再拥有该锁,但是文件系统认为仍然存在该锁。

欢迎提供有关如何防止这些构建失败的任何建议。

0 个答案:

没有答案