Для проекта Android, использующего систему сборки gradle, я хочу запустить тесты и сборку в jenkins на виртуальном сервере, предоставленном hosteurope.
Система использует
- Debian Wheezy (7.5)
- OpenJDK-7 (7u55-2.4.7-1~deb7u1)
- Jenkins (1.564) в качестве отдельного сервера.
Для запуска задания jenkins я установил
- Плагин Gradle (1.23)
- Плагин эмулятора Android (2.11.1)
Для самого процесса сборки используются Android Build Tools (19.1).
Сборка завершается сбоем каждый раз во время выполнения задачи preDexDebug со следующим сообщением об ошибке:
:app:preDexDebugError: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:preDexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
/var/lib/jenkins/tools/android-sdk/build-tools/19.1.0/dx --dex --output /var/lib/jenkins/workspace/test_project/app/build/pre-dexed/debug/ormlite-core-4.48-bdb20e19ede8fedfab10bb99de3affa6b8ed6e4d.jar /var/lib/jenkins/.gradle/caches/modules-2/files-2.1/com.j256.ormlite/ormlite-core/4.48/e579bd2905d0399af5029aaaf9817d5fa0ca88a5/ormlite-core-4.48.jar
Error Code:
1
Output:
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
При использовании ключа "--debug" в качестве причины сбоя представляется нехватка памяти в куче.
К сожалению, установка параметра JAVA_ARGS в /etc/default/jenkins или DEFAULT_JVM_OPTS в сценарии gradlew на «-Xms128m -Xmx512» не решает проблему. Единственное рабочее решение, которое я нашел, это использование _JAVA_OPTIONS.
Поэтому я добавил _JAVA_OPTIONS в качестве переменной среды в конфигурации jenkins.
Перейдите в меню «Jenkins->Управление Jenkins->Настроить систему» и установите флажок «Переменные среды» в разделе «Глобальные свойства». Затем нажмите кнопку «Добавить» и вставьте _JAVA_OPTIONS в текстовое поле с надписью «имя» и «-Xms64M -Xmx512M» в текстовое поле с надписью «значение».
Согласно немецкому разделу часто задаваемых вопросов на веб-сайте hosteurope (http://faq.hosteurope.de/index.php?cpid=13918) проблема вызвана неправильным расчетом доступной памяти на VPS hosteurope.