我正在使用Helm 3,每个环境有3个不同的value.yaml。如果我的初始发行版最终以失败的状态结束,以避免在运行helm upgrade --install myapp-dev
时出错,那么我想删除发行版本(如果存在于相关环境中)。
因此,根据以下脚本,如果deploy阶段成功运行,则它将卸载该发行版本以进行下一阶段。根据上一阶段发生故障的情况,最佳做法是什么?我应该使用try / catch块还是post部分?同时,我应该在哪种情况下真正使用此清理功能?
stage('Deploy to staging'){
when{
beforeAgent true
expression{return env.GIT_BRANCH == "origin/test"}
}
steps{
script{
def namespace = "test"
def ENV = "test"
sh " helm upgrade myapp-test my-chart --install -f values.${ENV}.yaml --namespace ${namespace}"
}
}
}
stage('Cleanup Stage'){
when{
beforeAgent true
expression{return env.GIT_BRANCH == "origin/test"}
}
steps{
script{
//Uninstall a release from the cluster
sh "helm uninstall myapp-test"
//See currently deployed releases
sh "helm list -all"
}
}
}
在Jenkinsfile中,您实际上应该在post
节中进行所有清理,无论发生什么错误,该清理都可以执行。例如,在您的情况下:
stages {
stage('Deploy to staging'){
when{
beforeAgent true
expression{return env.GIT_BRANCH == "origin/test"}
}
steps{
script{
def namespace = "test"
def ENV = "test"
sh " helm upgrade myapp-test my-chart --install -f values.${ENV}.yaml --
namespace ${namespace}"
}
}
}
}
post {
always {
helm uninstall myapp-test
}
}
这将确保您的环境保持清洁,无论它们之间是否发生故障。