2015-08-23 4 views
0

У меня есть свободный OpenShift счет с 3 шестернями, я установил передачу в качестве сервера Дженкинс и настроил DIY картриджа в качестве подчиненного узла, следуя шаги описаны здесь:OpenShift Jenkins для Android проектов CI

https://developer.jboss.org/people/lkrzyzanek/blog/2012/12/12/jenkins-on-openshift-with-own-slaves?_sscc=t

Соединение ssh между ведущим и подчиненным узлом отлично работает. Я исправил проблему кэша Дженкинс на slave.jar следуя инструкции, вывешенных здесь:

Change user.home system property

Я загрузил на ведомом андроид-SDK только с автоматической сборкой загруженной. Эта сокращенная версия sdk, успешно скомпилирует проекты андроид-студии на моем локальном компьютере, создает соответствующий APK.

Когда я создаю новое задание jenkins, указывающее на репозиторий git, код загружается и начинается сборка ./gradlew assemblyRelease. Все шаги работают нормально до тех пор, пока градиент не достигнет приложения задачи: preDexRelease, jenkins становится недоступным.

Я также попытался запустить gradlew вручную, выполнив ssh на подчиненную машину, хотя тайм-аут ssh (unset TMOUT) отключен, сеанс ssh неожиданно отключается, когда достигается шаг preDexRelease. Gradle logs (--debug) не дают никакого намека на то, что происходит.

Неужели кто-то испытал подобное поведение?

Gradle отладка:

... 
processing android/support/annotation/Keep.class... 
processing android/support/annotation/FractionRes.class... 
processing android/support/annotation/DimenRes.class... 
processing android/support/annotation/BoolRes.class... 
processing android/support/annotation/BinderThread.class... 
processing android/support/annotation/CallSuper.class... 
processing android/support/annotation/MenuRes.class... 
processing android/support/annotation/RequiresPermission$Read.class... 
processing android/support/annotation/AnimRes.class... 
processing android/support/annotation/Nullable.class... 
processing android/support/annotation/ColorRes.class... 
processing android/support/annotation/RequiresPermission$Write.class... 
processing android/support/annotation/CheckResult.class... 
processing android/support/annotation/InterpolatorRes.class... 
processing android/support/annotation/LayoutRes.class... 
processing android/support/annotation/TransitionRes.class... 
processing android/support/annotation/IntRange.class... 
processing android/support/annotation/RequiresPermission.class... 
processing android/support/annotation/Size.class... 
processing android/support/annotation/StringDef.class... 
processing android/support/annotation/NonNull.class... 
processing android/support/annotation/MainThread.class... 
processing android/support/annotation/ArrayRes.class... 
processing android/support/annotation/ColorInt.class... 
processing android/support/annotation/IntegerRes.class... 
processing android/support/annotation/StyleRes.class... 
processing android/support/annotation/VisibleForTesting.class... 
writing classes.dex; size 6576... 

> Building 85% > :app:preDexReleaseConnection to xxxxxxxx.rhcloud.com closed by remote host. 
Connection to xxxxxxxx.rhcloud.com closed. 

В качестве теста я использую простой один активность Android студийный проект.

Благодарим за помощь и совет.

ответ

0

Поскольку вы используете небольшие шестерни (512 МБ памяти, 256 МБ которых выделено jvm), у вас может быть нехватка памяти. Вы должны проверить ограничения на ограничение памяти (https://help.openshift.com/hc/en-us/articles/202399600-How-to-check-for-memory-limit-violations), вы также можете выделить больше памяти для JVM с помощью этих инструкций (https://developers.openshift.com/en/jbossas-jvm-memory.html), инструкции для сервера JBoss, но это также сработает для вашего случая. Убедитесь, что вы делаете это на подчиненном узле, где происходит фактическая сборка.

Смежные вопросы