詹金斯(Jenkins)在舞台上永远停下来,“没有任何步骤”

时间:2019-07-02 12:26:04

标签: jenkins jenkins-plugins terraform jenkins-groovy

我正在尝试在此“销毁”阶段使用terraform destroy命令破坏我的aws地形堆栈。当我在詹金斯和蔚蓝的海洋中跑步时,它说舞台没有台阶,然后在该舞台上永远停下来。

我已经尝试在此阶段添加一个while { branch 'master'}来强制运行,并且还尝试向该阶段添加其他代码,例如echo命令。我还尝试了在catch块中提取代码以强制某些程序在阶段中运行,但是那也不起作用。在Jenkins构建的开始,用户将选择是否要应用或破坏Terraform堆栈。如果他们选择销毁,那么环境字符串变量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并在try块中自动将no传递给它,因此,它将输出将被销毁的内容而没有实际销毁它。我将其放在try块中,因为如果没有,它将引发错误并使构建失败。在此之后,我希望catch块能够执行,这样它将提示用户并询问他们是否要破坏堆栈。用户可以查看terraform destroy块中调用的try命令的输出,然后他们可以查看将销毁的内容。然后,当用户单击以批准销毁时,Jenkins将自动销毁堆栈。

1 个答案:

答案 0 :(得分:0)

您可以通过运行terraform plan -destroy来获得plan进行销毁,而无需实际销毁资源