При попытке повысить производительность моих Gradle Android-сборок я наткнулся на демон Gradle и использовал его с большим успехом для локальных сборок.
Однако, работая под Jenkins на Ubuntu 14.04, сборки прерываются с ошибкой:
Starting process 'Gradle Test Executor 2'. Working directory: /tmp/myproject/android/example Command: /usr/lib/jvm/java-8-oracle/bin/java -Djava.awt.headless=true -Djava.security.manager=worker.org.gradle.process.internal.worker.child.BootstrapSecurityManager -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant -ea -cp /data/var/lib/jenkins/.gradle/caches/2.14.1/workerMain/gradle-worker.jar worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Test Executor 2'
Successfully started process 'Gradle Test Executor 2'
Daemon vm is shutting down... The daemon has exited normally or was terminated in response to a user interrupt.
Starting process 'Gradle Test Executor 3'. Working directory: /tmp/myproject/android/example Command: /usr/lib/jvm/java-8-oracle/bin/java -Djava.awt.headless=true -Djava.security.manager=worker.org.gradle.process.internal.worker.child.BootstrapSecurityManager -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant -ea -cp /[...]/.gradle/caches/2.14.1/workerMain/gradle-worker.jar worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Test Executor 3'
----- End of the daemon log -----
FAILURE: Build failed with an exception.
* What went wrong:
Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed)
* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output.
Error: Failed to run test (./gradlew --console=plain --info test -p myproject).
FAILURE: Build failed with an exception.
Несколько сборок могут выполняться параллельно. Если я запускаю сборку вручную, когда никакие другие сборки не работают, я не смог воспроизвести ее. У кого-то еще была эта проблема, но рекомендуемым решением было просто отключить Daemon Gradle, который я не хочу делать. Я бы подумал, что большая, параллельная среда сборки будет именно тем, что Gradle Daemon было предназначено для оптимизации.
Или, если я не смогу сделать Daemon Gradle надежно работать под Jenkins, почему бы и нет? Спасибо!