Я запускаю Jenkins от пользователя, jenkins
который $PATH
что-то установил, и когда я захожу в веб-интерфейс Jenkins, в окне свойств системы ( http://$host/systemInfo
) я вижу другое $PATH
.
Я установил Jenkins на Centos с собственным rpm с веб-сайта Jenkins. Я использую сценарий запуска, поставляемый с установкой, используяsudo /etc/init.d/jenkins start
Кто-нибудь может объяснить мне, почему это происходит?
echo $PATH
ли это тому, что вы видите в jenkins?Ответы:
Майкл,
Две вещи:
Когда Jenkins подключается к компьютеру, он обращается к
sh
оболочке, а не кbash
оболочке (по крайней мере, это то, что я заметил - я могу ошибаться). Поэтому любые изменения, внесенные вами в $ PATH в вашем файле bashrc, не рассматриваются.Кроме того, любые изменения, которые вы вносите в $ PATH в своей локальной оболочке (той, в которую вы лично используете ssh), не будут отображаться в Jenkins.
Чтобы изменить путь, который использует Дженкинс, у вас есть два варианта (AFAIK):
1) Отредактируйте
/etc/profile
файл и добавьте туда нужные пути2) Перейдите на страницу конфигурации вашего ведомого устройства и добавьте переменную среды
PATH
со значением:$PATH:/followed-by/paths/you/want/to/add
Если вы используете второй вариант, ваша системная информация по-прежнему не будет отображаться, но ваши сборки будут видеть добавленные пути.
источник
Я все время сталкивался с этой проблемой, но теперь просто добавляю:
В качестве первого шага в моем процессе сборки. Теперь все мои последующие правила загружены, чтобы Дженкинс работал без сбоев.
источник
source /etc/profile
в качестве первой команды в это поле Build> Execute Shell> Command textarea./usr/local/bin
указано в/etc/paths
, и/etc/paths
используются/usr/libexec/path_helper
, а path_helper выполняется в/etc/profile
.Вы также можете отредактировать
/etc/sysconfig/jenkins
файл, чтобы внести какие-либо изменения в переменные среды и т. Д. Я просто добавилsource /etc/profile
в конец файла./etc/profile
имеет все необходимыеPATH
настройки переменных. Когда вы это сделаете, обязательно перезапустите JenkinsМы запускаем ZendServer CE, который устанавливает pear, phing и т. Д. По другому пути, так что это было полезно. Кроме того, мы не получаем
LD_LIBRARY_PATH
ошибок, которые мы получали с клиентом Oracle и Jenkins.источник
Я попробовал
/etc/profile
,~/.profile
и~/.bash_profile
ничего из этого не сработало. Я обнаружил, что редактирование~/.bashrc
учетной записи jenkins slave было сделано.источник
/etc/profile
ни~/.profile
Информация об этом ответе устарела. Вам нужно перейти в «Настроить Jenkins»>, а затем щелкнуть, чтобы добавить пару «ключ-значение» переменной среды.
например:
export MYVAR=test
было быMYVAR
- ключ, аtest
- значение.источник
В моем более новом экземпляре EC2 для меня сработало просто добавление нового значения в PATH пользователя Jenkins .profile, а затем перезапуск tomcat.
В более старом экземпляре, где конфигурация отличается, использование № 2 из ответа Сагара было единственным, что сработало (т.е. .profile, .bash * не сработало).
источник
Я нашел для этого два плагина. Один загружает значения из файла, а другой позволяет настраивать значения на экране конфигурации задания.
Плагин Envfile - этот плагин позволяет вам устанавливать переменные среды через файл. Формат файла должен быть стандартным форматом файла свойств Java.
Плагин EnvInject - этот плагин позволяет добавлять переменные среды и выполнять сценарий установки, чтобы настроить среду для задания.
источник
Не могли бы вы просто добавить его как переменную среды в настройках Jenkins:
Управление Jenkins -> Глобальные свойства> Переменные среды: а затем нажмите «Добавить», чтобы добавить свойство PATH и его значение к тому, что вам нужно.
источник
Вот как я решил эту досадную проблему:
Я изменил
PATH
переменную, как предложил @sagar во втором варианте, но все равно получил другоеPATH
значение, чем ожидал.В конце концов я обнаружил, что это
EnvInject
плагин заменил моюPATH
переменную!Так что я мог либо удалить,
EnvInject
либо просто использовать его для вставки переменной PATH.Поскольку многие из наших заданий Jenkins используют этот плагин, я не хотел его удалять ...
Итак, я создал файл:
environment_variables.properties
в моем домашнем каталоге Jenkins.Этот файл содержал нужное мне значение среды пути:
PATH=$PATH:/usr/local/git/bin/
.В веб - интерфейсе Дженкинс:
Manage Jenkins -> Configure System
. На этом экране я поставил галочкуPrepare jobs environment
и вProperties File Path
поле ввел путь к моему файлу:/var/lib/jenkins/environment_variables.properties
.Таким образом, каждая наша работа Jenkins получает любые переменные, которые я помещаю в этот
environment_variables.properties
файл.источник
Jenkins также поддерживает формат
PATH+<name>
для добавления к любой переменной, а не только к PATH:Глобальные переменные среды или переменные среды узла:
Это также поддерживается на этапе конвейера
withEnv
:Просто обратите внимание, он добавляется к переменной. Если его необходимо добавить, вам нужно сделать то, что показывают другие ответы.
См. Документ по этапам конвейера здесь .
Или java-документацию на EnvVars здесь .
источник
У меня был прогресс по этой проблеме только после "/etc/init.d/jenkins force-reload". Я рекомендую попробовать это прежде всего и использовать это вместо перезапуска.
источник
На моем Ubuntu 13.04 я попробовал несколько настроек, прежде чем преуспел в этом:
источник
Добавить
в
Дженкинс использует sh, так что даже / etc / profile у меня не работает. Когда я добавляю это, у меня есть все env.
источник
Решение, которое сработало для меня
source ~/.bashrc
Объяснение
Сначала я проверил, что Дженкинс запускал BASH с помощью
echo $SHELL
иecho $BASH
(обратите внимание, что я явно помещаю#!/bin/bash
поверх текстового поля в Jenkins, я не уверен, что это требование для получения BASH).source
ing,/etc/profile
как предлагали другие, не работал.Глядя на
/etc/profile
я нашели проверка "$ PS1" обнаружила, что оно пустое. Я пробовал спуфинг,
$PS1
но безрезультатнооднако это не дало желаемого результата (добавьте остальное, что
$PATH
я ожидаю увидеть). Но если я скажу, чтобы bash был интерактивным$PATH
был изменен , как я ожидал.Я пытался выяснить, как правильно подделать интерактивную оболочку, чтобы
/etc/bash.bashrc
загрузить ее, но оказалось, что все, что мне нужно, было вниз~/.bashrc
, так что простоеsource
решение проблемы решило.источник
#!/bin/bash -el
чтобы сообщить bash о запуске в качестве оболочки входа. Это должно заставить bash исходить из необходимых .rc файловЯ перепробовал все сверху - у меня не получилось.
Я нашел два решения (оба для SSH-Slave)
Заходим в настройки ведомого
Добавить новую переменную среды
Часть "$ {HOME}" важна. Это делает дополнительный PATH абсолютным. Относительный путь у меня не подошел.
Вариант II (конвейер-скрипт)
источник
В Ubuntu я просто редактирую / etc / default / jenkins и добавляю в конце исходный / etc / profile, и мне это подходит.
источник
Также эффективен запуск команды с установленной переменной среды. Конечно, вы должны делать это для каждой запускаемой команды, но у вас, вероятно, есть сценарий задания, поэтому у вас, вероятно, есть только одна команда для каждой сборки. Мой сценарий работы - это сценарий python, который использует среду, чтобы решить, какой python использовать, поэтому мне все равно нужно было указать /usr/local/bin/python2.7 в его пути:
источник
Что сработало для меня, так это переопределение среды PATH для ведомого устройства.
Затем отключение и повторное подключение ведомого.
Несмотря на то, что показывала системная информация, это работало.
источник
У меня Jenkins 1.639 установлен на SLES 11 SP3 через zypper (менеджер пакетов). Установка настроила jenkins как услугу
Несмотря на
/etc/init.d/jenkins
источники/etc/sysconfig/jenkins
, любые установленные там переменные env не наследуются процессом jenkins, потому что он запускается в отдельной оболочке входа в новую среду, подобную этой:Мне удалось установить переменные env для процесса jenkins через
.bashrc
его домашний каталог -/var/lib/jenkins
. Пришлось творить,/var/lib/jenkins/.bashrc
потому что раньше его не было.источник
Вот что я сделал на ubuntu 18.04 LTS с Jenkins 2.176.2
Я создал файл .bash_aliases и добавил туда путь, переменные прокси и так далее.
В начале .bashrc это было определено.
Таким образом, он проверяет, что если мы запускаем неинтерактивную оболочку, то здесь мы ничего не делаем.
внизу .bashrc был включен для .bash_aliases
поэтому я переместил загрузку .bash_aliases сначала в .bashrc чуть выше неинтерактивной проверки.
Сначала это не сработало, но затем я отключил подчиненное устройство и снова подключил его, чтобы он снова загружал переменные. Вам не нужно перезапускать целые jenkins, если вы изменяете подчиненные переменные. просто отключите и снова подключите.
источник
1- добавьте в свой файл профиля файл ".bash_profile"
он находится в папке "/ home / your_user /"
vi .bash_profile
Добавить:
==> это рабочее пространство e jenkins
2- Если вы используете причал: перейдите в файл jenkins.xml
и добавить :
источник