Декларативный конвейер Дженкинса: ввод с условными шагами без блокировки исполнителя - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь настроить следующие функции для работы с синтаксисом декларативного конвейера Jenkins:

  • Условное выполнение определенных этапов только в master ветви
  • input запросить подтверждение пользователя для развертывания в промежуточной среде
  • Во время ожидания подтверждения он не блокирует исполнителя

Вот что я закончил:

pipeline { agent none stages { stage('1. Compile') { agent any steps { echo 'compile' } } stage('2. Build & push Docker image') { agent any when { branch 'master' } steps { echo "build & push docker image" } } stage('3. Deploy to stage') { when { branch 'master' } input { message "Deploy to stage?" ok "Deploy" } agent any steps { echo 'Deploy to stage' } } } }

Проблема в том, что для ступени 2 требуется вывод из 1, но он недоступен при запуске.Если я заменим различные директивы agent глобальными agent any, то выходные данные будут доступны, но исполнитель заблокирован в ожидании ввода пользователя на этапе 3. И если я попытаюсь объединить 1 и 2 в один этап, тоЯ теряю возможность условно выполнять некоторые шаги только на master.

Есть ли какой-либо способ добиться того поведения, которое я ищу?

1 Ответ

0 голосов
/ 19 мая 2018

Вам нужно использовать команду stash в конце вашего первого шага, а затем unstash, когда вам нужны файлы

Я думаю, они доступны в генераторе фрагментов

Согласно документации

Сохраняет набор файлов для последующего использования в той же сборке, как правило, в другом узле / рабочей области.Сохраненные файлы недоступны иным способом и обычно удаляются в конце сборки.Обратите внимание, что шаги stash и unstash предназначены для использования с небольшими файлами.Для больших объемов передачи данных используйте плагин External Workspace Manager или внешний менеджер репозитория, например Nexus или Artifactory

...