Дженкинс навсегда делает паузы на сцене с «Без шагов» - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь использовать команду terraform destroy на этой стадии 'Destroy', чтобы уничтожить мой стек терраформ aws. Когда я запускаю это в Дженкинсе и синем океане, он говорит, что на сцене нет шагов, а затем на этом этапе он просто останавливается навсегда.

Я попытался добавить while { branch 'master'} на этом этапе, чтобы заставить его работать, а также я попытался добавить другой код на этом этапе, например, команду echo. Я также попытался извлечь код из блока catch, чтобы заставить что-то запускаться на этапе, однако это тоже не сработало. В начале сборки Jenkins пользователь будет выбирать, хотят ли они применить или уничтожить стек терраформ. Если они выберут уничтожить, то строковая переменная окружения STEPS будет иметь свой 21-й или 22-й индекс, равный t, чтобы представлять "true". Я использую это, чтобы проверить, должен ли скрипт уничтожения выполняться. Я проверил эту индексацию, и эта часть кода работает.

            steps {
                echo "Entering destroy block"
                script {
                    if(STEPS[21] == "t" || STEPS[22]=="t") {
                    echo "I entered the if block!"
                    try {
                        sh 'no | ./terraform destroy'

                    }
                    catch(err) {
                        def destrInput = input(id: 'destroying', message: 'Would you like to destroy the stack?', parameters: [ [$class: 'BooleanParameterDefinition', defaultValue: false, description: 'CHECK WHAT YOU ARE DESTROYING ABOVE', name: 'confirm'] ])
                        sh './terraform destroy -input=false -auto-approve'
                        echo "The stack has been destroyed."
                    }
                    def destrInput = input(id: 'destroying', message: 'Would you like to destroy the stack?', parameters: [ [$class: 'BooleanParameterDefinition', defaultValue: false, description: 'CHECK WHAT YOU ARE DESTROYING ABOVE', name: 'confirm'] ])
                    sh './terraform destroy -input=false -auto-approve'
                    echo "The stack has been destroyed."
                    return
                    }
                    else {
                        echo "I did nothing in the destroy block except print this message. "
                    }
                }
            }
        }

Я хочу, чтобы этот этап уничтожения запускался terraform destroy и автоматически передавал в него no, в блоке try, чтобы он выводил то, что будет уничтожено, без его фактического уничтожения. Я поместил это в блок try, потому что, если нет, он выдаст ошибку и не даст сборки. После этого я хочу, чтобы блок catch выполнялся, поэтому он будет запрашивать пользователя и спрашивать его, хотят ли они уничтожить стек. Пользователь может просматривать выходные данные команды terraform destroy, вызываемой в блоке try, чтобы они могли видеть, что будет уничтожено. Затем, когда пользователь щелкнет, чтобы подтвердить удаление, Jenkins автоматически уничтожит стек.

1 Ответ

0 голосов
/ 02 июля 2019

Вы можете получить план для уничтожения без фактического уничтожения ресурсов, запустив terraform plan -destroy

...