Обновление переменной среды Jenkins Slave

У меня есть Jenkins Slave (ПК с Windows), который имеет переменную среды JAVA_HOME. Я обновил версию Java на ведомом устройстве, поэтому я также обновил переменную среды.

Когда я смотрю на системные свойства этого подчиненного устройства через веб-интерфейс Jenkins, свойство JAVA_HOME сообщается как старое.

Запуск echo %PATH% на ПК с Windows показывает правильные значения. Запуск println System.getenv("PATH") на консоли сценария Jenkins Node для подчиненного устройства показывает старое значение JAVA_HOME.

Я попытался удалить и снова добавить Slave и перезапустить сервер Jenkins. Тем не менее старое значение не обновляется.

есть идеи?


person C0deAttack    schedule 15.12.2011    source источник


Ответы (4)


Hudson/Jenkins не использует подчиненные переменные среды, поскольку он поддерживает несколько версий Java, поэтому вы настраиваете переменные домашней среды Java в графическом интерфейсе.

Что вам нужно сделать, так это перейти в «Управление Hudson/Jenkins», а затем выбрать «Управление узлами». Выберите узел, который вы хотите настроить, из списка, а затем нажмите «Настроить». Внизу есть раздел свойств узла. Установите флажок «Местоположения инструментов». Нажмите «Добавить», затем выберите свой JDK в раскрывающемся списке и добавьте к нему новый путь.

person Robert Longson    schedule 16.12.2011
comment
Добавление пути к узлу, а не к подчиненной среде, помогло, спасибо. - person C0deAttack; 20.12.2011
comment
Вопрос остается без ответа. Мне нужно, чтобы мой подчиненный каким-то образом обновлял переменную PATH на лету. - person Alex Okrushko; 06.09.2012
comment
@AlexOkrushko Вы нашли автоматизированный способ обновления конфигурации подчиненного устройства специально для добавления/обновления переменной ENV? - person AKS; 09.12.2015
comment
@ArunSangal это было очень давно, но я думаю, что сделал что-то подобное, как описано в ответе ниже. - person Alex Okrushko; 14.12.2015
comment
@AlexOkrushko - С Jenkins REST/API это возможно, я добился определенных успехов, поделюсь тем, что нашел. В моем случае я создаю подчиненное устройство с помощью плагина Ansible + Jenkins Swarm (способ, но он не создает переменные ENV). Я планирую создать подчиненное устройство, используя первую часть, а затем вызвать второе задание Jenkins (которое настроит вновь созданное подчиненное устройство для встраивания/добавления/обновления любых переменных ENV). - person AKS; 14.12.2015

Это ошибка в Jenkins: https://issues.jenkins-ci.org/browse/JENKINS-27739

3 способа решения (я лично подтвердил каждый):

  1. Обновите Jenkins до >=1,617 (рекомендуется)
  2. Перезапустите мастер Дженкинса
  3. Удалите подчиненное устройство Jenkins, а затем снова добавьте его.
person kmiles    schedule 29.05.2015
comment
спасибо, что указали нам на сообщение об ошибке. Обновление до ›=1.617 исправляет это - person pHiL; 02.07.2015
comment
Нет ли способа добавить/обновить переменные ENV в конфигурации подчиненного устройства с помощью Jenkins Rest/API? - person AKS; 09.12.2015
comment
Полностью удалять раб не нужно! Достаточно просто перезапустить подчиненный агент. - person Johan Bjäreholt; 28.06.2016
comment
Согласившись с @JohnBjareholt, ясно, что сервер кэширует среду, установленную подчиненным устройством, даже когда среда загружается сценарием запуска подчиненного устройства на удаленной машине (без изменений в конфигурации сервера для подчиненного устройства). Перезапуск раба не решил эту проблему для меня. Интересно, что перезапуск сервера перезагружает эти параметры среды (даже те, которые объявлены в сценарии запуска подчиненного устройства). - person dan; 04.10.2016

Перезапустите подчиненное устройство, это устранило проблему с моей конфигурацией.

person deyanpavlov    schedule 04.02.2015

Вы можете обновить свою версию Jenkins, она решит эту проблему. В противном случае это сработало для меня (Jenkins 1.6, узел сборки/тестирования: MacOSX Mojave):

Сначала установите java 8 в узел сборки/тестирования с помощью команд:

brew update
brew cask install caskroom/versions/java8

Затем в веб-панели Jenkins щелкните узел сборки/тестирования, затем нажмите Настроить, а затем нажмите кнопку Дополнительно..., это покажет вам несколько текстовых полей. Затем в поле JavaPath добавьте путь к вашему java 8.

введите здесь описание изображения

Для меня этот путь выглядит так:

/Library/Java/JavaVirtualMachines/jdk1.8.X_XXX.jdk/Contents/Home/bin/java

Примечание. не забудьте ранее заменить X_XXX на версию Java 8.

Затем Сохранить.

После этого отключите узел сборки/тестирования и снова подключите его. Это должно решить проблему.

Источник

person Pedro Trujillo    schedule 27.02.2019