20 ответов:
Михаил,
две вещи:
когда Дженкинс подключается к компьютеру, он идет к
shШелл, а неbashоболочка (по крайней мере, это то, что я заметил - я могу ошибаться). Поэтому любые изменения, внесенные в $PATH в вашем файле bashrc, не рассматриваются.кроме того, любые изменения, внесенные в $PATH в вашей локальной оболочке (тот, который вы лично ssh в) не будет отображаться в Дженкинс.
чтобы изменить путь, который использует Дженкинс, у вас есть два вариантов (насколько я знаю):
1) редактировать
/etc/profileфайл и добавить пути, что вы хотите там2) Перейдите на страницу конфигурации вашего ведомого устройства и добавьте переменную окружения
PATHзначение:$PATH:/followed-by/paths/you/want/to/addесли вы используете второй вариант, ваша системная информация все равно не будет отображаться, но ваши сборки будут видеть добавленные пути.
Я продолжал сталкиваться с этой проблемой, но теперь я просто добавляю:
source /etc/profileкак первый шаг в моем процессе сборки. Теперь все мои последующие правила загружены для Дженкинса, чтобы работать гладко.
вы также можете изменить внести изменения в переменные среды и т. д. Я просто добавил
source /etc/profileдо конца файла./etc/profileимеет все все правильноеPATHНастройка переменных. Когда вы сделаете это, убедитесь, что вы перезапустить Дженкинс/etc/init.d/jenkins restartмы запускаем ZENDSERVER CE, который устанавливает pear, phing и т. д. По другому пути, поэтому это было полезно. Кроме того, мы не получаем
LD_LIBRARY_PATHошибки, которые мы использовали, чтобы получить с клиента Oracle и Дженкинс.
пробовал
/etc/profile,~/.profileи~/.bash_profileи ни один из них не работал. Я нашел, что редактирование~/.bashrcдля подчиненного счета Дженкинса сделал.
информация по этому ответу устарела. Вам нужно перейти к настройке Jenkins >, а затем вы можете щелкнуть, чтобы добавить пару ключ-значение переменной среды оттуда.
например:
export MYVAR=testбудетMYVAR- это ключ, аtestзначение.
на моем новом экземпляре EC2, просто добавив новое значение для пользователя Дженкинса .путь профиля, а затем перезапуск tomcat работал для меня.
на более старом экземпляре, где конфигурация отличается, используя #2 от ответ Сагара было единственное, что работало (т. е.профиль. ,bash* не работает).
Я нашел два плагина для этого. Один загружает значения из файла, а другой позволяет настроить параметры на экране конфигурации задания.
Envfile Плагин - этот плагин позволяет устанавливать переменные среды через файл. Формат файла должен быть стандартным форматом файла свойств Java.
EnvInject Плагин - этот плагин позволяет добавлять переменные среды и выполнять сценарий установки для настройки окружающая среда для работы.
не могли бы вы просто добавить его в качестве переменной среды в настройках Дженкинса:
управление Дженкинс -> глобальные свойства > переменные среды: А затем нажмите кнопку "Добавить", чтобы добавить путь свойства и его значение к тому, что вам нужно.
вот как я решил эту досадную проблему:
я изменил
PATHпеременная, как @ sagar предложил в своем 2-м варианте, но все же я получил разныеPATHзначением, чем я ожидал.В конце концов я узнал, что это было
EnvInjectплагин, который заменил мойPATHпеременной!так что я мог бы либо удалить
EnvInjectили просто использовать его для ввода переменной PATH.поскольку многие из наших заданий Дженкинса используют этот плагин, я не хотел удалите его...
поэтому я создал файл:
environment_variables.propertiesв моем домашнем каталоге Дженкинса.этот файл содержал значение среды path, которое мне было нужно:
PATH=$PATH:/usr/local/git/bin/.из веб-интерфейса Дженкинса:
Manage Jenkins -> Configure System. На этом экране-я поставил галочкуPrepare jobs environmentопции и вProperties File Pathполе я ввел путь к моему файлу:/var/lib/jenkins/environment_variables.properties.таким образом, каждое задание Дженкинса мы получаем любые переменные, которые я помещаю в это .
У меня был прогресс по этому вопросу только после "/etc/init.D / Дженкинс force-reload". Я рекомендую попробовать это прежде всего, и использовать это, а не перезапускать.
на моем Ubuntu 13.04 я попробовал довольно много настроек, прежде чем преуспеть в этом:
- Edit/etc/init / jenkins.conf
- найдите место, где " exec start-stop-server..."начинается
- вставьте обновление среды непосредственно перед этим, т. е.
export PATH=$PATH: / some / new / path / bin
решение, которое сработало для меня
source ~/.bashrcобъяснение
я сначала проверил, что Дженкинс бежал BASH, с
echo $SHELLиecho $BASH(обратите внимание, что я явно ставлю#!/bin/bashповерх textarea в Дженкинсе, я не уверен, что это требование, чтобы получить BASH).sourceing/etc/profileкак другие предложили, не работает.смотрим
/etc/profileнашелif [ "$PS1" ]; then ...и проверка "$PS1 " нашла его нулевым. Я попробовал подменить
$PS1безрезультатно вот такexport PS1=1 bash -c 'echo $PATH'однако это не дало желаемого результата (добавьте остальную часть
$PATHЯ ожидал увидеть). Но если я скажу Башу быть интерактивнымexport PS1=1 bash -ci 'echo $PATH'the
$PATHбыл изменен, как я и ожидал.я пытался выяснить, как правильно подделать интерактивную оболочку, чтобы получить
/etc/bash.bashrcзагрузить, но получается все, что мне нужно было в~/.bashrc, так что простоsourceing это решило проблему.
Дженкинс также поддерживает формат
PATH+<name>чтобы добавить к любой переменной, а не только путь:глобальные переменные среды или переменные среды узла:
Это также поддерживается в шаге конвейера
withEnv:node { withEnv(['PATH+JAVA=/path/to/java/bin']) { ... } }просто обратите внимание,он добавляет к переменной. Если он должен быть добавлен, вам нужно сделать то, что показывают другие ответы.
см. документ шаги конвейера здесь.
вы также можете использовать синтаксис PATH+WHATEVER= / something для добавления / something в $PATH
или java docs на EnvVars здесь.
на Ubuntu я просто редактирую /etc/default /jenkins и добавляю source/etc / profile в конце, и это работает для меня.
запуск команды с набором переменных окружения также эффективен. Конечно, вы должны сделать это для каждой выполняемой команды, но у вас, вероятно, есть сценарий задания, поэтому у вас, вероятно, есть только одна команда на сборку. Мой сценарий работы-это скрипт python, который использует среду, чтобы решить, какой python использовать, поэтому мне все еще нужно было поместить /usr/local/bin/python2.7 в его путь:
PATH=/usr/local/bin <my-command>
то, что работало для меня, переопределяло среду пути для ведомого устройства.
Set: PATH To: $PATH:/usr/local/binзатем отсоединение и повторное подключение ведомого устройства.
несмотря на то, что системная информация показывала, что это сработало.
у меня установлен Jenkins 1.639 на SLES 11 SP3 через zypper (менеджер пакетов). Установка настроена Дженкинс как сервис
# service jenkins Usage: /etc/init.d/jenkins {start|stop|status|try-restart|restart|force-reload|reload|probe}хотя
/etc/init.d/jenkinsисточник/etc/sysconfig/jenkins, любые переменные env, установленные там, не наследуются процессом Дженкинса, потому что он запускается в отдельной оболочке входа с новой средой, подобной этой:startproc -n 0 -s -e -l /var/log/jenkins.rc -p /var/run/jenkins.pid -t 1 /bin/su -l -s /bin/bash -c '/usr/java/default/bin/java -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --javaHome=/usr/java/default --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --httpPort=8080 --ajp13Port=8009 --debug=9 --handlerCountMax=100 --handlerCountMaxIdle=20 &' jenkinsкак мне удалось установить переменные окружения для процесса Дженкинс через
.bashrcв своем домашнем каталоге -/var/lib/jenkins. Я должен был ... создать/var/lib/jenkins/.bashrcкак его раньше не было.
добавить
/usr/bin/bashat
Дженкинс - > управление Дженкинс - > настройка системы - > оболочка - >оболочка исполняемый файл
Дженкинс использует sh так, что даже/etc / профиль не работает для меня Когда я добавляю это, у меня есть все env.
Я пробовал все из выше не работает для меня.
Я нашел два решения (оба для SSH-Slave)
перейдите в настройки ведомого устройства
добавить новую переменную среды
- путь
- ${PATH}:${HOME}/.pub-cache / bin:${HOME}/.local / bin
важна часть " ${HOME}". Это делает дополнительный путь абсолютным. Относительный путь не работает мне.
Вариант II (конвейер-скрипт)
pipeline { agent { label 'your-slave' } environment { PATH = "/home/jenkins/.pub-cache/bin:$PATH" } stages { stage('Test') { steps { ansiColor('xterm') { echo "PATH is: $PATH" } } } } }
1 - добавить в файл профиль".файл"
он находится в папке"/home/ your_user/"
vi .файл
добавить:
export JENKINS_HOME=/apps/data/jenkins export PATH=$PATH:$JENKINS_HOME==> это рабочее пространство e jenkins
2 - Если вы используете пристани : иди к Дженкинсу.xml-файл
и добавить :
<Arg>/apps/data/jenkins</Arg>

Comments