Учитывая конвейер сборки jenkins 2.1, jenkins вставляет env
переменную в файл node{}
. Например, BRANCH_NAME
можно получить доступ с помощью
node {
echo ${env.BRANCH_NAME}
...
Я хочу отобразить все env
свойства в конвейере Дженкинса
... учитывая, что я не знаю все свойства заранее.
Я ищу код вроде
node {
for(e in env){
echo e + " is " + ${e}
}
...
который будет отражать что-то вроде
BRANCH_NAME is myBranch2
CHANGE_ID is 44
...
jenkins
groovy
jenkins-pipeline
Джеймс Томас, Луна, 1979
источник
источник
env.each { name, value -> println "Name: $name -> Value $value" }
печатаетName: org.jenkinsci.plugins.workflow.cps.EnvActionImpl@45c2d1ee -> Value null
.new ClassName() { ... }
), он должен работать. Или вы запускаете его в методе с тегами@NonCPS
, тогда и внутри него будут работать замыкания.Ответы:
Другой, более лаконичный способ:
ср. https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#code-sh-code-shell-script
источник
sh
наbat
иenv
наset
под Windows.Согласно документации Jenkins для декларативного конвейера :
Для конвейера со сценарием Jenkins :
Вышеупомянутое также сортирует ваши env vars для удобства.
источник
printenv
это просто команда оболочки, которая печатает среду, ничего специфичного для Jenkins. Без аргументов это эквивалентноenv
без аргументов. Я почти уверен, чтоsh 'printenv | sort'
будет работать в DCL или в сценарии конвейера.sh 'printenv | sort'
действительно работает для декларативного конвейера Jenkins; fwiwsh 'env | sort'
также работает (оба протестированы на Jenkins версии 2.46.1). Первоначально я упомянул,sh 'printenv'
потому что на него есть ссылка в официальной документации Jenkins.Следующие работы:
Обратите внимание, что он, скорее всего, завершится ошибкой при первом выполнении и потребует одобрения различных методов Groovy для запуска в песочнице jenkins. Это делается в «управлении утверждением jenkins / внутрипроцессного скрипта»
В список попали:
источник
java.lang.UnsupportedOperationException: each on a CPS-transformed closure is not yet supported
@NonCPS
?Вы можете достичь результата, используя
sh
/bat
step иreadFile
:К сожалению,
env.getEnvironment()
возвращает очень ограниченную карту переменных среды.источник
sh 'env > env.txt'
работает хорошо и включает переменные среды, созданные процессом оболочки.env.getEnvironment()
показывает только переменные среды набора Jenkins, которые являются подмножеством того, что видно вsh 'env'
технике. Кроме того, требуется одобрение безопасности сценарияmethod org.jenkinsci.plugins.workflow.support.actions.EnvironmentAction getEnvironment
.env.each { name, value -> println "Name: $name -> Value $value" }
Рекомендовано @Renato @Jayan только печатаетName: org.jenkinsci.plugins.workflow.cps.EnvActionImpl@45c2d1ee -> Value null
.К чему вся эта сложность?
делает то, что вам нужно (под * nix)
источник
Вот быстрый сценарий, который вы можете добавить в качестве конвейерного задания для перечисления всех переменных среды:
В нем будут перечислены как системные переменные, так и переменные Jenkins.
источник
Кросс-платформенный способ перечисления всех переменных среды:
источник
Я использую плагин Blue Ocean, и мне не нравилось, что каждая запись среды получает свой собственный блок. Я хочу один блок со всеми линиями.
Плохо печатает:
Плохо печатает:
Хорошо печатает:
Хорошо печатает: (как упомянул @mjfroehlich)
источник
Приведенные выше ответы устарели из-за нового синтаксиса конвейера. Ниже выводятся переменные среды.
источник
for
закрытием также вызовет проблемы без@NonCPS
аннотации.В чистых Groovy решения , которые считывают глобальные
env
переменные не напечатают все переменные окружения (например , они отсутствуют переменные изenvironment
блока, изwithEnv
контекста и большинства машинно-специфические переменных из ОС). Используя шаги оболочки, можно получить более полный набор, но для этого требуетсяnode
контекст, который не всегда нужен.Вот решение, которое использует этот
getContext
шаг для получения и печати полного набора переменных среды, включая параметры конвейера, для текущего контекста.Предупреждение: не работает в песочнице Groovy. Однако вы можете использовать его из надежной общей библиотеки.
источник
если вы действительно хотите перебрать
env
список, просто выполните:источник
другой способ получить именно тот результат, который упоминается в вопросе:
Это можно легко расширить, чтобы построить карту с подмножеством env vars, соответствующих критериям:
источник
Я полагаю, что вам это нужно в форме сценария, но если кто-то еще просто хочет просмотреть графический интерфейс Jenkins, этот список можно найти, выбрав раздел «Переменные среды» в контекстном левом меню каждой сборки. Выберите проект = > Выберите сборку => Переменные среды
источник
Я обнаружил, что это самый простой способ:
источник
Вы можете получить все переменные из своего экземпляра jenkins. Просто посетите:
источник