我正在尝试在此“销毁”阶段使用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将自动销毁堆栈。