Jenkins: Scripted Pipeline — подтверждение выполнения для Production окружения

Автор: | 08/16/2018
 

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

Если значение равно backend-production — то вызываем verify(), а потом запускаем задачу.

Если значение любое другое — то просто запускаем задачу.

Проверяем, запускаем билд:

Получаем запрос на ввод данных:

Ставим галочку, жмём Proceed:

Билд прошёл:

Теперь запускаем ещё, но на этот раз не ставим галочку, а просто жмём Proceed:

Тут сработало условие if(!userInput), которое вызвало error.

И последняя проверка — с Abort:

Готово.