Переменные среды Дженкинса / Хадсона - PullRequest
95 голосов
/ 28 апреля 2011

Я запускаю Jenkins от пользователя jenkins, для которого установлено $PATH, и когда я захожу в веб-интерфейс Jenkins, в окне Свойства системы (http://$host/systemInfo) я вижу другое $PATH.

Я установил Jenkins на Centos с собственным числом оборотов с веб-сайта Jenkins. Я использую сценарий запуска, предоставленный при установке, используя sudo /etc/init.d/jenkins start

Может кто-нибудь объяснить мне, почему это происходит?

Ответы [ 20 ]

134 голосов
/ 28 апреля 2011

Майкл,

Две вещи:

Когда Дженкинс подключается к компьютеру, он переходит в оболочку sh, а не в оболочку bash (по крайней мере, это то, что язаметили - я могу ошибаться).Поэтому любые изменения, которые вы вносите в $ PATH в своем файле bashrc, не рассматриваются.

Кроме того, любые изменения, которые вы вносите в $ PATH в своей локальной оболочке (в которую вы лично входите в ssh), не будут отображаться в Jenkins.

Чтобы изменить путь, который использует Jenkins, у вас есть две опции (AFAIK):

1) Отредактируйте ваш файл /etc/profile и добавьте нужные вам пути

2) Перейдите на страницу конфигурации вашего ведомого устройства и добавьте переменную среды PATH со значением: $PATH:/followed-by/paths/you/want/to/add

Если вы используете второй параметр, информация о вашей системе все равно не будет отображаться, но ваши сборкиувидим добавленные пути.

34 голосов
/ 06 января 2012

Я продолжал сталкиваться с этой проблемой, но теперь я просто добавляю:

source /etc/profile

В качестве первого шага в моем процессе сборки. Теперь все мои последующие правила загружены для бесперебойной работы Jenkins.

19 голосов
/ 21 января 2012

Вы также можете отредактировать файл /etc/sysconfig/jenkins, чтобы внести любые изменения в переменные среды и т. Д. Я просто добавил source /etc/profile в конец файла./etc/profile имеет все необходимые настройки PATH переменных.Когда вы сделаете это, обязательно перезапустите Jenkins

/etc/init.d/jenkins restart

Мы запускаем ZendServer CE, который устанавливает pear, phing и т. Д. По другому пути, так что это было полезно.Кроме того, мы не получаем LD_LIBRARY_PATH ошибок, которые мы использовали, чтобы получить с клиентом Oracle и Jenkins.

14 голосов
/ 27 января 2012

Я пробовал /etc/profile, ~/.profile и ~/.bash_profile, и ни один из них не работал.Я обнаружил, что редактирование ~/.bashrc для подчиненного аккаунта jenkins сделало.

9 голосов
/ 31 августа 2012

Информация об этом ответе устарела. Вам нужно перейти в Configure Jenkins> И затем вы можете нажать, чтобы добавить оттуда пару ключ-значение переменной среды.

Например: export MYVAR=test будет MYVAR является ключом, а test является значением.

5 голосов
/ 16 июня 2012

На моем более новом экземпляре EC2, просто добавив новое значение в PATH .profile пользователя Jenkins и затем перезапустив tomcat, сработало для меня.

На более старом экземпляре, где конфигурация отличается, используя # 2 из Ответ Сагар был единственным, что сработало (то есть .profile, .bash * не сработало).

4 голосов
/ 22 декабря 2011

Я нашел два плагина для этого. Один загружает значения из файла, а другой позволяет настраивать значения на экране конфигурации задания.

Плагин Envfile - Этот плагин позволяет вам устанавливать переменные среды через файл. Формат файла должен быть стандартным форматом файла свойств Java.

Плагин EnvInject - Этот плагин позволяет добавлять переменные среды и выполнять сценарий установки для настройки среды для задания.

4 голосов
/ 08 июня 2016

Вот как я решил эту надоедливую проблему:

Я изменил переменную PATH, как @sagar предложил в его втором варианте, но все равно получил значение PATH, отличное от ожидаемого.

В конце концов я обнаружил, что именно плагин EnvInject заменил мою PATH переменную!

Так что я могу либо удалить EnvInject, либо просто использовать его для вставки переменной PATH.

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

Итак, я создал файл: environment_variables.properties в моем домашнем каталоге Jenkins.

Этот файл содержал нужное мне значение среды пути: PATH=$PATH:/usr/local/git/bin/.

Из веб-интерфейса Jenkins: Manage Jenkins -> Configure System. На этом экране - я установил флажок Prepare jobs environment, а в поле Properties File Path я ввел путь к своему файлу: /var/lib/jenkins/environment_variables.properties.

Таким образом, каждое задание Дженкинса получает любые переменные, которые я помещаю в этот environment_variables.properties файл.

4 голосов
/ 17 ноября 2014

Не могли бы вы просто добавить его в качестве переменной среды в настройках Jenkins:

Управление Jenkins -> Глобальные свойства> Переменные среды: А затем нажмите «Добавить», чтобы добавить свойство PATH и его значение к тому, что вам нужно.

2 голосов
/ 02 января 2014

На моем Ubuntu 13.04 я пробовал немало твиков, прежде чем преуспеть с этим:

  1. Редактировать /etc/init/jenkins.conf
  2. Найти место, где начинается exec-stop-server ... "начинается
  3. Вставьте обновление среды непосредственно перед этим, т.е.

export PATH = $ PATH: / some / new / path / bin

...