У меня есть две работы в дженкинсах, каждая из которых нуждается в том же параметре.Jenkins - передача переменных между заданиями?
Как запустить первое задание с параметром, чтобы при запуске второго задания использовался один и тот же параметр?
У меня есть две работы в дженкинсах, каждая из которых нуждается в том же параметре.Jenkins - передача переменных между заданиями?
Как запустить первое задание с параметром, чтобы при запуске второго задания использовался один и тот же параметр?
Вы можете использовать Parameterized Trigger Plugin, который позволит вам передавать параметры из одной задачи в другую.
Вы можете использовать Hudson Groovy builder для этого.
Первая работа в трубопроводе
Вторая работа в трубопроводе
(для коллег Googlers)
Если вы строите серьезный трубопровод с Build Flow Plugin, вы можете передавать параметры между заданиями с DSL, как это :
Предположив доступный строковый параметр "CVS_TAG", для того, чтобы передать его на другую работу:
build("pipeline_begin", CVS_TAG: params['CVS_TAG'])
parallel (
// will be scheduled in parallel.
{ build("pipeline_static_analysis", CVS_TAG: params['CVS_TAG']) },
{ build("pipeline_nonreg", CVS_TAG: params['CVS_TAG']) }
)
// will be triggered after previous jobs complete
build("pipeline_end", CVS_TAG: params['CVS_TAG'])
Подсказка для отображения доступных переменных/Params:
// output values
out.println '------------------------------------'
out.println 'Triggered Parameters Map:'
out.println params
out.println '------------------------------------'
out.println 'Build Object Properties:'
build.properties.each { out.println "$it.key -> $it.value" }
out.println '------------------------------------'
1.Post-BUILD Действия> Выберите «Триггерная параметрированная сборка для других проектов»
2.Введите переменную окружения со значением. Также могут быть параметры сборки Jenkins.
Подробных шагов можно увидеть здесь: -
Надеется, что это полезно :)
Этот ответ удовлетворяет заданию OP, не требуя плагина или использования DSL. – BTC
FYI, этот ответ по-прежнему нужен плагин. –
Плагин отлично подходит, но не может передавать значения переменных, заданные в командных разделах оболочки выполнения. –
accepted answer здесь не работает для моего использования. Мне нужно было динамически создавать параметры в одной задаче и передавать их в другую. Как упоминает Mark McKenna, похоже, что нет способа экспортировать переменную из шага сборки оболочки в действия пост-сборки.
Я достиг обходного пути, используя Parameterized Trigger Plugin, записав значения в файл и используя этот файл в качестве параметров для импорта через «Добавить пост-сборку» -> «Триггер-параметризованная сборка ...», затем выберите «Добавить параметры» '->' Параметры из файла свойств '.
Вот что мне нужно. Благодарю. – luckytaxi
Если вы хотите использовать конвейер jenkins 2.x, вы можете использовать writeFile/stash-> unstash/readFile для копирования данных состояния между заданиями. http://www.slideshare.net/ericlongtx/jenkins-days-workshop-pipelines-eric-long Оформить заказ слайда 21 для примера. – siesta
Просто добавьте свой ответ в дополнение к Найджел Кирби, как я еще не могу комментировать:
Чтобы передать динамически созданный параметр, можно также экспортировать переменную в «Выполнить Shell» плитку, а затем передать его через «Trigger параметризованная сборка на другие проекты» => «Предопределенные параметры» => дать «YOUR_VAR = $ YOUR_VAR». Моя команда использует эту функцию для передачи версии пакета npm из задания на работу в задания развертывания.
UPDATE: выше работает только для параметров, введенных Дженкинсом, параметр, созданный из оболочки, все равно должен использовать тот же метод, например, переменную echo YOUR_VAR = $ {YOUR_VAR}>.свойства и передать этот файл вниз
Смотрите мой ответ на этот другой пост:
работал для меня (параметр должен быть указан в обоих рабочих мест, а не только родительскую работу)
I подумайте, что ответ выше нуждается в некотором обновлении:
Я пытался создать динамический каталог для хранения моих артефактов сборки вверх, поэтому мне захотелось передать мой номер сборки вверх по течению вниз по работе. но не смог заставить его работать. Вот как это сработало:
Это происходит потому, что в новой версии jenkins требуют, чтобы вы определяли переменную в последующей работе. Надеюсь, это полезно.
Чтение ответов, я не вижу другого варианта, который мне нравится, и предложит его. Мне нравится параметризация рабочих мест, но она не всегда хорошо масштабируется. Если у вас есть задания, которые не находятся непосредственно перед первым заданием, но дальше по конвейеру, вы действительно не хотите параметризовать каждое задание в конвейере, чтобы иметь возможность пройти все параметры до конца. Или, если у вас есть большое количество параметров, используемых множеством других заданий (особенно те, которые не обязательно привязаны к одному родительскому или основному заданию), снова параметризация не работает.
В этих случаях я предпочитаю выводить значения в файл свойств и затем вводить их в любое задание, которое мне нужно, используя плагин EnvInject. Это можно сделать динамически, что является другим способом решения проблемы из другого ответа выше, где все еще использовались параметризованные задания. Это решение очень хорошо масштабируется во многих сценариях.
Я столкнулся с той же проблемой, когда мне пришлось передать версию pom на работу Rundeck в нисходящем направлении.
То, что я сделал, было с помощью параметров инъекции с помощью файла свойств, как, например:
1) Создание свойств в свойствах файла с помощью оболочки:
Постройте действия:
2) принятие определенных свойств на работу вниз по течению: сообщение Постройте Действия:
Например: properties sending
3) Тогда было возможно использовать $ POM_VERSION как таковое в работе Rundeck в нисходящем направлении.
/\ Jenkins Версия: 1,636
/\ почему при создании сработавшего сборки, надо было добавить опцию «Текущие параметры сборки», чтобы передать свойство!.
РЕДАКТИРОВАТЬ: Нашел blooper в том, что я написал. В определении свойств, оно должно было быть: эхо POM_VERSION = $ POM_VERSION> play.properties и нет: эхо $ POM_VERSION >> play.properties К сожалению об этом. –
Привет, извините за звучание как нуб, но все в порядке, если кто-то может отредактировать это с подробностями о том, как это сделать с помощью параметрированного плагина Trigger? – Fadi
На странице плагина есть достойное объяснение того, как действовать, и после того, как вопросительные знаки установки с правой стороны каждой опции имеют довольно хорошее объяснение того, как использовать плагин. Что еще вам нужно? –
Сторона примечания. Не похоже, что переменные экспортируемой среды, созданные в разделах сценариев bash, могут быть заменены в выходных параметрах (например, «export VERSION» не приведет к тому, что «UPSTREAM_VERSION = $ VERSION» примет правильное значение; вместо этого получает '$ VERSION'. –