Есть несколько задач, которые выполняются в 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:
Готово.











