Как мне связать запущенную вручную нисходящую работу, а также передать параметры?

Я использую Jenkins для создания конвейера сборки и должен запускать шаг развертывания в конвейере. Это означает ручной процесс (сборка происходит автоматически, синхронизируется, затем останавливается на стадии развертывания, ожидая ручной авторизации).

Мне нужно, чтобы шаг развертывания также запускался с параметрами с предыдущего шага.

Итак, используя "Parameterized plugin", я могу передавать параметры между заданиями. Я могу запускать автоматические или вручную запущенные рабочие задания (не уверен, что это стандартная функция, или некоторые из них были добавлены некоторыми плагинами).

Однако я не могу найти способ запуска ручного параметризованного задания.

Кто-нибудь знает, как это сделать? Есть ли другой плагин, который я могу использовать?

Причина, по которой мне нужны параметры, заключается в том, что я создал общее задание развертывания и должен передать имя модуля и версию maven для развертывания. Я мог бы создать конкретные задания развертывания для каждого модуля, но это было бы очень болезненно.

Я также рассматривал следующее, но, похоже, kludge:

  • Автоматическое задание выполняет сборку, запуск триггеров триггера сборки, передачу параметров.
  • "Триггер развертывания" записывает эти параметры в файл в файловой системе (шаг сборки - выполнение оболочки) и вручную запускает фактическое задание развертывания
  • Задание развертывания (ДОЛЖНО использовать WORKSPACE из задания "запуска триггера" ) читает параметры из файловой системы (используя EnvInject-плагин).

Существуют различные проблемы с этим подходом

  • Мне просто не нравится.
  • Имеет промежуточное задание только для передачи параметров. Это загромождает рабочее пространство Дженкинса
  • Поскольку сборки выполняются на одной и той же WORKSPACE, мне кажется хрупкой (хотя работоспособной!)

Ответ 1

Текущая производственная версия (1.4.2) плагина build-pipe-plug-it позволяет - указывать ручное нисходящее задание с параметрами, которое отображается на конвейере и может быть запущено оттуда. Старые версии не могли этого сделать.

Ответ 2

Взгляните на плагин Build Pipeline: https://wiki.jenkins-ci.org/display/JENKINS/Build+Pipeline+Plugin.

Вы можете указать задания, которые будут автоматически запускаться или запускаться вручную.

Также, если вам нужна передача параметров между заданиями, вам нужно загрузить плагин Groovy: https://wiki.jenkins-ci.org/display/JENKINS/Groovy+plugin

Чтобы передать параметры, скажем, SVN-ревизия между заданиями, которые вам понадобятся для Выполнить систему Groovy Script в начале вашей сборки. Это пример, который добавит параметр SVN_UPSTREAM, который может использоваться любыми последующими заданиями. ПРИМЕЧАНИЕ. Я заметил проблему с созданием нисходящего задания, которое также имеет систему Groovy script. Кажется, он сбрасывает любые ссылки на исходные параметры, созданные.

import hudson.model.*
def build = Thread.currentThread().executable;
build.addAction(new ParametersAction(new StringParameterValue("SVN_UPSTREAM", build.getEnvVars()['SVN_REVISION'])));
println "SVN_UPSTREAM:" + build.getEnvVars()['SVN_UPSTREAM'];

Ответ 3

Существует своего рода обходное решение:

  • настройка ручного продвижения (поощрять сборку, когда... > только при одобрении вручную) в работе по началу работы
  • в продвижении укажите add Actions > Trigger параметризованная сборка для других проектов, укажите задание и добавьте параметры

Как только вы вручную рекламируете определенную сборку восходящего задания, он будет запускать сборку последующей работы. Но нисходящее задание не появится на конвейере.

Ответ 4

Плагин Build Pipeline может сделать это, но на момент написания этой статьи не в какой-либо выпущенной версии. Я построил плагин из main (rev 392 в то время), который включает patch, упомянутый в этот вопрос, и он работает для меня.
Когда вы установили это, вы сможете использовать в первом задании пост-сборку, называемую "Построить другие проекты (ручной шаг)", и там вы можете настроить параметры, которые будут переданы ко второму (вручную запущенному) конвейерному заданию.

Ответ 5

По моему мнению, нет возможности достичь цели

Когда вы запускаете поставку конвейера-трубопровод-плагин, проверяются только параметры первого задания → , а затем отображаются (или нет) экран initParam

Но когда следующий шаг (например, разворачивание) является ручным, и он требует параметров, тогда экран initParam игнорируется Посмотрите на вопрос https://issues.jenkins-ci.org/browse/JENKINS-32336