Переменные среды Дженкинса / Хадсона



я запускаю Дженкинс от пользователя jenkins то $PATH установить на что-то и когда я иду в веб-интерфейс Дженкинса, в Свойства Системы

733   20  

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 я попробовал довольно много настроек, прежде чем преуспеть в этом:

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

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

решение, которое сработало для меня

source ~/.bashrc

объяснение

я сначала проверил, что Дженкинс бежал BASH, с echo $SHELL и echo $BASH (обратите внимание, что я явно ставлю #!/bin/bash поверх textarea в Дженкинсе, я не уверен, что это требование, чтобы получить BASH). source ing /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> чтобы добавить к любой переменной, а не только путь:

глобальные переменные среды или переменные среды узла:

Jenkins variable + notation

Это также поддерживается в шаге конвейера 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/bash

at

Дженкинс - > управление Дженкинс - > настройка системы - > оболочка - >оболочка исполняемый файл

Дженкинс использует sh так, что даже/etc / профиль не работает для меня Когда я добавляю это, у меня есть все env.

Я пробовал все из выше не работает для меня.

Я нашел два решения (оба для SSH-Slave)

  1. перейдите в настройки ведомого устройства

  2. добавить новую переменную среды

  3. путь
  4. ${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

    Ничего не найдено.