Я хотел бы иметь возможность сделать что-то вроде:
AOEU=$(echo aoeu)
и Дженкинс установил AOEU=aoeu
.
Раздел « Переменные среды » в Jenkins этого не делает. Вместо этого это устанавливает AOEU='$(echo aoeu)'
.
Как я могу заставить Дженкинса оценить команду оболочки и назначить вывод переменной среды?
В конце концов, я хочу иметь возможность назначить исполнителя задания переменной среды, которая может быть передана или использована другими сценариями.
Ответы:
Это можно сделать через плагин EnvInject следующим образом:
Создайте шаг сборки «Execute shell», который выполняется:
Создайте шаг построения переменных среды Inject и установите для «Свойства путь к файлу» значение
propsfile
.Примечание . Этот плагин (в основном) не совместим с плагином Pipeline.
источник
sh
на пути.foo
будет экспортироваться в этом конкретном действии оболочки, но не в других действиях.Самый простой способ
Вы можете использовать плагин EnvInject для внедрения переменных окружения при запуске сборки. Например:
Как вы знаете, это работает
источник
key=value
. В моем случае я полностью генерирую строку:cat app/build.gradle | grep "def majorVersion" | python -c 'import sys,re,os; print("VERSION_NUMBER="+re.findall(r"[\d+\.]+", sys.stdin.read())[0]+os.environ["BUILD_NUMBER"])'
BUILD_DATE=date "+%Y-%m-%d-%H_%M_%S"
и ,BUILD_DATE=$(date "+%Y-%m-%d-%H_%M_%S")
аBUILD_DATE=`date "+%Y-%m-%d-%H_%M_%S"`
не работы для меняВ моем случае мне нужно было добавить
JMETER_HOME
переменную среды, которая будет доступна через мои сценарии сборки Ant для всех проектов на моем сервере Jenkins (Linux), таким образом, чтобы это не мешало моей локальной среде сборки (Windows и Mac) вbuild.xml
сценарии. , Установка переменной среды с помощью « Управление Jenkins» - «Настройка системы» - глобальные свойства были самым простым и наименее навязчивым способом для достижения этой цели. Никаких плагинов не требуется.Переменная окружения затем доступна в Ant через:
Это можно проверить, добавив:
Который производит:
источник
git
/path/to/my/git
иPATH+git
/path/to/my/git
. Однако, если я пытаюсь получить доступgit
от аJenkins pipeline script
, я получаю:/bin/sh: git: command not found
.Вы можете использовать Environment Injector Plugin для установки переменных среды в Jenkins на уровне работы и узла. Ниже я покажу, как установить их на уровне работы.
Manage Jenkins > Manage Plugins
и установите плагин.Configure
экран вашей работыAdd build step
вBuild
разделе и выберитеInject environment variables
Если вам необходимо определить новую переменную среды в зависимости от некоторых условий (например, параметров задания), вы можете обратиться к этому ответу .
источник
Вы можете попробовать что-то вроде этого
источник
Jenkinsfile
для конвейера (не работа)! Это здорово, спасибо за это!Плагин EnvInject aka ( Environment Injector Plugin ) предоставляет несколько опций для установки переменных среды из конфигурации Jenkins.
Выбрав,
Inject environment variables to the build process
вы получите:Properties File Path
Properties Content
Script File Path
Script Content
и наконец
Evaluated Groovy script
.Evaluated Groovy script
дает возможность установить переменную окружения на основе результата выполненной команды :execute
методом:Groovy
кодом:(Более подробную информацию о каждом методе можно найти во встроенной справке (?))
К сожалению, вы не можете сделать то же самое,
Script Content
как говорится:источник
Существует плагин Build Env Propagator, который позволяет добавлять новые переменные среды сборки, например
источник
В моем случае я настроил переменные окружения, используя следующую опцию, и она работала:
источник
Обычно вы можете настроить переменные окружения в глобальных свойствах в Configure System .
Однако для динамических переменных с заменой оболочки вы можете создать файл сценария в директории Jenkins HOME и выполнить его во время сборки. Требуется доступ по SSH. Например.
sudo su - jenkins
илиsudo su - jenkins -s /bin/bash
Создайте сценарий оболочки, например:
В Jenkins Build ( Execute shell ) вызовите скрипт и его переменные перед чем-либо еще, например
источник
sudo su - jenkins
, все ещеecho $USER
дает мнеroot
.su -l
параметр, чтобы сделать это, в противном случае задайте отдельный вопрос.Примечание. Значение переменной среды указывается в виде строки. Если вы хотите использовать его как логическое значение, то вам нужно проанализировать его с помощью Boolean.parse (env.DISABLE_SQL).
источник
Попробуйте плагин Environment Script ( GitHub ), который очень похож на EnvInject . Это позволяет вам запустить скрипт перед сборкой (после проверки SCM), которая генерирует для него переменные среды. Например
и в вашем скрипте вы можете напечатать, например,
FOO=bar
стандартный вывод, чтобы установить эту переменную.Пример для добавления к существующей
PATH
переменной -style:Таким образом, вы можете делать все, что вам нужно в скрипте - либо
cat
файл, либо запускать скрипт на другом языке из дерева исходных текстов вашего проекта и т. Д.источник
Вы можете использовать один из следующих способов, перечисленных ниже:
Управление Jenkins -> Настройка системы -> Глобальные свойства -> Переменные среды -> Добавить
источник
По какой-то причине я
sudo su - jenkins
не захожу на сайтjenkins
пользователя , поэтому я использовал другой подход.Я успешно установил глобальные переменные env, используя jenkins
config.xml
at/var/lib/jenkins/config.xml
(установлен в Linux / RHEL) - без использования внешних плагинов.Я просто должен был остановить добавление Дженкинса, затем добавить
globalNodeProperties
, а затем перезапустить.Пример, я определяю переменные
APPLICATION_ENVIRONMENT
иSPRING_PROFILES_ACTIVE
кcontinious_integration
ниже,источник
Мы используем заводной файл работы:
источник