我使用的是Helm3,每个环境都有3个不同的values.yaml。如果我的初始版本最终处于失败状态,以避免在运行helm upgrade --install myapp-dev时出现错误,我希望删除相关环境中存在的版本。
因此,根据下面的脚本,如果deploy stage运行成功,那么它将卸载下一阶段的发行版。根据上一阶段的“万一失败”,最好的做法是什么?我应该使用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"
}
}
}发布于 2020-01-20 16:09:12
在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
}
}这将保证您的环境保持清洁,无论在两者之间的故障。
https://stackoverflow.com/questions/59813197
复制相似问题