Файл блокировки Android-кеша сборки запускает сборки Jenkins - PullRequest
0 голосов
/ 04 декабря 2018

У нас есть ночные сборки под Jenkins под Windows, которые включают приложение для Android.Дженкинс вызывает Ant, который выполняет большую часть нашей сборки, и частично в процессе сборки Ant вызывает Gradle, чтобы построить (или протестировать) наше приложение для Android.

В большинстве случаев это работает правильно, но мы наблюдаем некоторые перебоисбои, потому что сборка кеша Android блокируется, когда мы пытаемся создать наше приложение для 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, ничто не удерживает блокировку (файл блокировки все еще присутствует), и если я перезапущу Jenkinsbuild, оно пройдет.

Большинство решений, которые я видел, - это ответы типа «очистить кеш», которые будут работать для постоянной проблемы блокировки (наша с перебоями), но не будут препятствовать возникновению проблемы.назад.Это полезно, если сборка отменяется или происходит сбой, но здесь это не так.

Еще один плохой выбор - отключить кэш сборки, но тогда мы потеряем преимущества в производительности, связанные с наличием кеша сборки.

Я сильно подозреваю, что это проблема с файловой системой Windows, где ни один процесс на самом деле не удерживает блокировку, но файловая система считает, что что-то еще есть.

Любые предложения о том, какпредотвратить эти сбои сборки приветствуются.

...