Как установить переменные среды в Jenkins?
Я хотел бы иметь возможность сделать что-то вроде:
AOEU=$(echo aoeu)
и Дженкинс выделяют AOEU=aoeu.
The Переменные Среды раздел в Дженкинсе этого не делает. Вместо этого, он устанавливает AOEU='$(echo aoeu)'.
как я могу заставить Дженкинса оценить команду оболочки и назначить вывод переменной среды?
В конце концов, я хочу иметь возможность назначить исполнителя задания переменной среды, которая может быть передана или использована другой сценарий.
10 ответов:
Это можно сделать через EnvInject плагин следующим образом:
создайте шаг сборки "Execute shell", который выполняется:
echo AOEU=$(echo aoeu) > propsfileсоздать ввести переменные окружения шаг сборки и установите "путь к файлу свойств" в
propsfile.Примечание: этот плагин (в основном) не совместим с плагином трубопровода.
самый простой способ
можно использовать EnvInject плагин для ввода переменных среды при запуске сборки. Например:
Как вы знаете, это работает
в моем случае, мне нужно добавить
JMETER_HOMEпеременная окружения будет доступна через мои скрипты сборки Ant во всех проектах на моем сервере Jenkins (Linux), таким образом, чтобы не мешать моей локальной среде сборки (Windows и Mac) вbuild.xmlсценарий. Установка переменной окружения через управление Дженкинс - настройка системы - глобальные свойства был самый простой и наименее навязчивый способ сделать это. Никакие плагины не являются необходимый.
переменная окружения затем доступна в Ant через:
<property environment="env" /> <property name="jmeter.home" value="${env.JMETER_HOME}" />Это можно проверить на работ, добавив:
<echo message="JMeter Home: ${jmeter.home}"/>что производит:
JMeter Home:~/.jmeter
Плагин EnvInject ака ( Плагин Инжектора Среды) дает вам несколько вариантов для установки переменных среды из конфигурации Дженкинса.
опции
Inject environment variables to the build processвы получите:
Properties File PathProperties Content
Script File Path
Script Contentи наконец
Evaluated Groovy script.
Evaluated Groovy scriptдает вам возможность установить переменную окружения на основе результата выполненной команды:
- С
executeспособ:return [HOSTNAME_SHELL: 'hostname'.execute().text, DATE_SHELL: 'date'.execute().text, ECHO_SHELL: 'echo hello world!'.execute().text ]
- или с явными
Groovyкод:return [HOSTNAME_GROOVY: java.net.InetAddress.getLocalHost().getHostName(), DATE_GROOVY: new Date() ](более подробную информацию о каждом методе можно найти в встроенной справке (?))
к сожалению вы не можете сделать то же самое с
Script Contentкак говорится:выполнить файл сценария, направленного на настройка среды, например создание папки, копирование файлов и так далее. Дайте содержимое файла сценария. Вы можно использовать указанные выше переменные свойств. однако, добавление или переопределение переменные среды в скрипте не оказывают никакого влияния на построить задание.
здесь Build Env Propagator Plugin что позволяет добавлять новые переменные среды сборки, например
любой последовательный шаг распространения переменных среды сборки переопределит ранее определенные значения переменных среды.
вы можете попробовать что-то вроде этого
stages { stage('Build') { environment { AOEU= sh (returnStdout: true, script: 'echo aoeu').trim() } steps { sh 'env' sh 'echo $AOEU' } } }
можно использовать Окружающая Среда Инжектор Плагин для установки переменных среды в Jenkins на уровне заданий и узлов. Ниже я покажу как это сделать на уровне работы.
- из веб-интерфейса Дженкинса перейдите в
Manage Jenkins > Manage Pluginsи установить плагин.
- иди на работу
Configure- найти
Add build stepinBuildи выберитеInject environment variables- установите нужную переменную окружения в качестве VARIABLE_NAME=value pattern. В моем случае, я изменил значение переменной USERPROFILE
Если вам нужно определить новую переменную среды в зависимости от некоторых условий (например, параметры задания) вы можете обратиться к этой ответ.
обычно вы можете настроить переменные среды на глобальные свойства на Настройка Системы.
однако для динамических переменных с заменой оболочки вы можете создать файл сценария в Jenkins HOME dir и выполнить его во время сборки. Требуется доступ по SSH. Например.
- войдите в систему как Дженкинс:
sudo su - jenkinsилиsudo su - jenkins -s /bin/bashсоздать сценарий оболочки , например:
echo 'export VM_NAME="$JOB_NAME"' > ~/load_env.sh chmod 750 ~/load_env.shВ Jenkins Построить (выполнить консоли), вызовите скрипт и его переменные прежде всего, например
source ~/load_env.sh
попробовать Плагин Сценария Среды (GitHub), который очень похож на EnvInject. Он позволяет запускать скрипт перед сборкой (после проверки SCM), который генерирует переменные среды для него. Е. Г.
и в вашем скрипте, вы можете печатать, например,
FOO=barк стандартному выходу для установки этой переменной.пример для добавления к существующей
PATH-стиль переменная:echo PATH+unique_identifier=/usr/local/binтак что вы можете делать все, что вам нужно в скрипте - либо
catфайл или запустить скрипт на каком-либо другом языке из исходного дерева вашего проекта и т. д.
почему-то
sudo su - jenkinsне регистрирует меняjenkinsпользователей, Я в конечном итоге использовал другой подход.мне удалось установить глобальные переменные env с помощью использования jenkins
config.xmlat/var/lib/jenkins/config.xml(установлен в Linux / RHEL) - без использования внешних плагинов.Я просто должен был остановить Дженкинса добавить, а затем добавить
globalNodeProperties, а затем перезапустить.пример, я определяю переменные
APPLICATION_ENVIRONMENTиSPRING_PROFILES_ACTIVEдоcontinious_integrationниже<?xml version='1.0' encoding='UTF-8'?> <hudson> <globalNodeProperties> <hudson.slaves.EnvironmentVariablesNodeProperty> <envVars serialization="custom"> <unserializable-parents/> <tree-map> <default> <comparator class="hudson.util.CaseInsensitiveComparator"/> </default> <int>2</int> <string>APPLICATION_ENVIRONMENT</string> <string>continious_integration</string> <string>SPRING_PROFILES_ACTIVE</string> <string>continious_integration</string> </tree-map> </envVars> </hudson.slaves.EnvironmentVariablesNodeProperty> </globalNodeProperties> </hudson>







Comments