Есть несколько задач, которые выполняются в Scripted Pipeline.
В задачах выполняется провижен CloudFormation и запуск Ansible плейбука на Dev и Production.
Что бы исключить случайный запуск Production задачи — хочется добавить шаг подтверждения действия.
Используем pipeline-input-step
и класс BooleanParameterDefinition
.
Добавляем функцию verify()
:
def verify() { stage('Verify') { def userInput = input( id: 'userInput', message: 'This is PRODUCTION!', parameters: [ [$class: 'BooleanParameterDefinition', defaultValue: false, description: '', name: 'Please confirm you sure to proceed'] ]) if(!userInput) { error "Build wasn't confirmed" } } }
В условии if(!userInput)
проверяем boolean значение userInput
— true или false, по умолчанию — false, см. дальше.
И её вызов:
node { switch("${env.LIMIT}") { case "backend-production": verify() echo "Run job" break; default: echo "Dev deploy" break; } }
Тут проверяется значение параметра LIMIT
, который может быть backend-production, backend-dev или backend-test.
Если значение равно backend-production — то вызываем verify()
, а потом запускаем задачу.
Если значение любое другое — то просто запускаем задачу.
Проверяем, запускаем билд:
Получаем запрос на ввод данных:
Ставим галочку, жмём Proceed:
Билд прошёл:
Теперь запускаем ещё, но на этот раз не ставим галочку, а просто жмём Proceed:
Тут сработало условие if(!userInput)
, которое вызвало error
.
И последняя проверка — с Abort:
Готово.