11

私のGradle Androidビルドのパフォーマンスを向上させようとしている間に、Gradleデーモンを見つけ、ローカルビルドに大いに役立てています。ジェンキンスがGradleデーモンを使用してビルドに失敗する

の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. 

複数を並列に実行することができる構築します。他のビルドが実行されていないときに手動でビルドを実行すると、再現できませんでした。 Someone elseがこの問題を抱えていましたが、推奨しない解決策は、私がやりたくないGradle Daemonを無効にすることでした。私は、大規模で並行したビルド環境が、Gradle Daemonが最適化を意図したものであると思うでしょう。

ジェンキンスの下でGradle Daemonを確実に動作させることができないのであれば、どうしてですか?ありがとう!

+1

大きな質問ですが、私はまったく同じボート構成になっています。問題をローカルで再現しようとし、解決策を提供できるかどうかを確認します。 –

+0

うん、https://docs.gradle.org/current/userguide/gradle_daemon.html#when_should_i_not_use_the_gradle_daemon –

+0

私は同じ問題があり、私はそれを修正するように見えることはできません。私はすべての可能な方法(フラグ、環境変数など)でデーモンを無効にし、異なるGradleバージョン、64Mから2GBまでのさまざまなVM設定を無効にしました。 Ubuntu 16.04とUbuntu 14.04の2つの全く新しいインストールも試しました。私は最終的に7と8の両方のJavaバージョン(実際には8が必要です)とOpenJDKとOracle VMの両方を使用して試しました。残念ながら何も動作しません。私は本当にこの問題の解決に感謝します。 Windows 7と10のマシンでは、すべて正常に動作します。 –

答えて

4

バージョン3.0以降、Gradle Daemonはデフォルトで有効になっています。ただし、official documentation4.2.1までは、継続的な統合サーバーでは使用しないでください。

デーモンは、すべての開発環境で使用することをお勧めします。継続的な統合のためにデーモンを無効にし、サーバー環境を構築することをお勧めします。

デーモンはより速いビルドを可能にします。これは、人間がビルドの前に座っているときに特に重要です。 CIビルドでは、安定性と予測可能性が最も重要です。ランタイムが以前のビルドから完全に分離されているので、各ビルドに新しいランタイム(つまりプロセス)を使用する方が信頼性が高くなります。

この勧告は、Gradleの3.0以来Disabling the Daemon

を参照してください、私たちは、デフォルトでデーモンを有効にして、両方の開発者のマシンと継続的インテグレーションサーバのためにそれを使用することをお勧めし、それ以来変更されました。ただし、デーモンによってCIビルドが不安定になることが疑われる場合は、ランタイムが以前のビルドから完全に分離されているため、各ビルドに対して新しいランタイムを使用するように無効にすることができます。

関連する問題