如果存在,请卸载头盔以删除发行版

问题描述 投票:0回答:1

我正在使用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"
            }
        }
    }
jenkins jenkins-pipeline kubernetes-helm
1个回答
0
投票

在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
  }
}

这将确保您的环境保持清洁,无论它们之间是否发生故障。

© www.soinside.com 2019 - 2024. All rights reserved.