После отката версии jenkins slave с 3.25 до 3.15 решил запостить баг. Нашел уже существующий JENKINS-53810, который похож по описанию на мою проблему. Попробовал предложенное решение, но мне оно не помогло.
Попутно гуглил об использовании jenkins slave на Raspberry PI и наткнулся на эту статью. В ней использовалась java от Oracle, а не OpenJDK, которая доступна в репозитариях Raspbian.
Пробую установить jdk для arm с сайта Oracle. Скачиваю файл jdk-8u181-linux-arm32-vfp-hflt.tar.gz (Linux ARM 32 Hard Float ABI) и заливаю его на raspberry
Теперь распаковываю архив в домашнюю директорию пользователя jenkins
$ cd /home/jenkins $ tar -xzf /tmp/jdk-8u181-linux-arm32-vfp-hflt.tar.gz $ ln -s jdk1.8.0_181 jdk $ /home/jenkins/jdk/bin/java -version java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) Client VM (build 25.181-b13, mixed mode)
Пробую для начала запустить slave из консоли
$ cat | /home/jenkins/jdk/bin/java -jar remoting.jar -workDir /home/jenkins
Прошло не больше 25 секунд, но slave уже отрапортовал о готовности! Стал разбираться в чем же разница между java от Oracle и OpenJDK. Заметил в выводе упоминание mixed или interpreted mode и различные названия java машин (OpenJDK Zero / HotSpot). Дальнейшее изучение вопроса привело к находке еще одного варианта jvm - JamVM, которая активируется ключем "-jamvm".
Пробую запустить jenkins slave через эту машину
$ cat | java -jamvm -jar remoting.jar -workDir /home/jenkins
Запуск занял примерно 2 минуты 30 секунд. Не так быстро как у HotSpot от Oracle, но и намного быстрее чем OpenJDK Zero.
Сравнение вывода версий OpenJDK Zero, JamVM и HotSpot
OpenJDK Zero
$ java -version openjdk version "1.8.0_40-internal" OpenJDK Runtime Environment (build 1.8.0_40-internal-b04) OpenJDK Zero VM (build 25.40-b08, interpreted mode)
JamVM
$ java -jamvm -version openjdk version "1.8.0_40-internal" OpenJDK Runtime Environment (build 1.8.0_40-internal-b04) JamVM (build 2.0.0, inline-threaded interpreter with stack-caching)
HotSpot
$ /home/jenkins/jdk/bin/java -version java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) Client VM (build 25.181-b13, mixed mode)
Почитать о mixed, compiled, interpreted режимах компилятора jvm и флагах -Xint, -Xcomp, -Xmixed можно тут.
Комментариев нет:
Отправить комментарий