Jenkins使用Gradle守护进程构建失败

Jenkins使用Gradle守护进程构建失败,jenkins,gradle,continuous-integration,android-gradle-plugin,gradle-daemon,Jenkins,Gradle,Continuous Integration,Android Gradle Plugin,Gradle Daemon,在试图提高Gradle Android版本的性能时,我偶然发现了Gradle守护进程,并在本地版本中获得了巨大成功 然而,在Ubuntu 14.04上的Jenkins下运行时,构建会间歇性地失败,原因是: Starting process 'Gradle Test Executor 2'. Working directory: /tmp/myproject/android/example Command: /usr/lib/jvm/java-8-oracle/bin/java -Djava.aw

在试图提高Gradle Android版本的性能时,我偶然发现了Gradle守护进程,并在本地版本中获得了巨大成功

然而,在Ubuntu 14.04上的Jenkins下运行时,构建会间歇性地失败,原因是:

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.
多个生成可能并行运行。如果我在没有其他构建运行的情况下手动运行一个构建,我就无法复制它。有这个问题,但建议的解决方案只是禁用Gradle守护进程,我不想这样做。我认为大型并发构建环境正是Gradle Daemon想要优化的


或者,如果我不能让Gradle守护进程在Jenkins手下可靠地工作,为什么不呢?谢谢

自版本
3.0以来,Gradle守护程序默认处于启用状态。但是,until
4.2.1
声明不应在持续集成服务器中使用守护进程

建议在所有开发人员环境中使用守护进程。建议禁用持续集成和构建服务器环境的守护进程

守护进程支持更快的构建,当有人坐在构建之前时,这一点尤为重要。对于CI构建,稳定性和可预测性至关重要。为每个构建使用新的运行时(即进程)更可靠,因为运行时与以前的构建完全隔离

自那时以来,该建议已发生变化,请参见

自Gradle 3.0以来,我们默认启用Daemon,并建议将其用于开发人员的机器和持续集成服务器。但是,如果您怀疑守护进程使您的CI构建不稳定,则可以禁用它以对每个构建使用新的运行时,因为运行时与任何以前的构建完全隔离


很好的问题,我在同一条船上。我会尝试在本地重现问题,看看是否能提供解决方案。嗯,我也有同样的问题,似乎无法解决。我以所有可能的方式(标志、环境变量等)、不同的Gradle版本、不同的VM设置(从64m最大内存到2gb内存)禁用了守护进程。我还尝试了两个全新的安装,一个在Ubuntu 16.04上,一个在Ubuntu 14.04上。最后,我尝试使用不同的Java版本7和8(尽管我确实需要8)以及OpenJDK和Oracle的虚拟机。不幸的是,什么都不管用。我非常希望能找到解决这个问题的办法。在Windows7和Windows10机器上,一切运行正常。