Демон Gradle build неожиданно исчез (возможно, он был убит или, возможно, разбился), при создании Android-проекта на Jenkins

У меня есть Android-проект, который успешно работает на Android Studio.

Теперь я хочу построить его на Дженкинсе. Но когда я это делаю, я получил следующую ошибку: демон Gradle build неожиданно исчез (возможно, он был убит или, возможно, разбился)

Исключение составляет:

org.gradle.launcher.daemon.client.DaemonDisappearedException: Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed) at org.gradle.launcher.daemon.client.DaemonClient.handleDaemonDisappearance(DaemonClient.java:222) at org.gradle.launcher.daemon.client.DaemonClient.monitorBuild(DaemonClient.java:198) at org.gradle.launcher.daemon.client.DaemonClient.executeBuild(DaemonClient.java:162) at org.gradle.launcher.daemon.client.DaemonClient.execute(DaemonClient.java:125) at org.gradle.launcher.daemon.client.DaemonClient.execute(DaemonClient.java:80) at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43) at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:173) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:241) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:214) at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35) at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:207) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169) at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33) at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22) at org.gradle.launcher.Main.doAction(Main.java:33) at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:55) at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:36) at org.gradle.launcher.GradleMain.main(GradleMain.java:23) 

Я читаю связанные темы, но это не помогает. Я попытался построить его с помощью демона gradle, и без него, но проблема все еще существует.

Рекомендуется отключать daemon на любом сервере CI . Используйте этот параметр, чтобы отключить его

 --no-daemon 

Похоже, проблема связана с памятью. Тем не менее, отключение демона, предложенное Олегом, похоже, помогает.

использование

org.gradle.daemon = ложь

в

grade.properties

Либо в папке ~ / .gradle, либо в папке проекта.

Ссылка: https://docs.gradle.org/current/userguide/gradle_daemon.html#sec:disabling_the_daemon

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

Я нашел ответ на форуме gradle.org, который предположил, что GradleDaemon всегда будет работать в любом случае. Флаг -no-daemon просто запустил бы эту конкретную сборку, а не оставался на неопределенный срок.

Если вы укажете аргументы JVM, требующие forking, Gradle разветвит новую JVM. Независимо от того, нужен ли вам процесс демона, выполняемый класс называется GradleDaemon. Переключатель -no-daemon должен вызывать разветвленный процесс как одноразовый, а не длительный процесс daemon, но он все равно будет запускать класс GradleDaemon.

Источник: https://discuss.gradle.org/t/no-daemon-switch-ineffective-if-jvm-settings-cause-new-fork/14919/5

Возможно, я читаю это неправильно, и я не могу ручаться за достоверность ответа, но я думаю, что причиной этой ошибки является нехватка памяти для Gradle. Поскольку он всегда будет запускать GradleDaemon.

Поэтому я добавил

 org.gradle.jvmargs=-Xmx1024m 

К моему ~/.gradle/gradle.properties и он больше не дал мне эту ошибку.

Я пробовал решение --no-daemon но моя сборка продолжалась с ошибкой с тем же DaemonDisappearedException .

Я решил это, увеличив ОЗУ сервера, на котором я запускаю Jenkins. В AWS EC2, что означало необходимость увеличения типа экземпляра EC2, что приводит к увеличению ОЗУ.

Gradle build daemon disappeared unexpectedly во многих случаях, означая, что сам град или даже java разбился. В моем случае это была java . Заполненный отчет об ошибке: https://bugzilla.redhat.com/show_bug.cgi?id=1408857

Посмотрите на файлы с именем like: hs_err_pid%p.log где% p – это PID процесса в каталоге, из которого вы выполняете задачу gradle .