Helm Uninstall для удаления Release, если существует - PullRequest
0 голосов
/ 19 января 2020

Я использую Helm 3 и у меня есть 3 различных values.yaml для каждой среды. Если мой первоначальный выпуск заканчивается в состоянии сбоя, чтобы избежать ошибки при выполнении helm upgrade --install myapp-dev, я хотел бы удалить выпуск, если существует для связанной среды.

Так, согласно приведенному ниже сценарию, если этап развертывания выполняется успешно, то он удалит релиз для следующего этапа. Как лучше всего это делать в случае неудачи на предыдущем этапе? Должен ли я использовать блок 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"
            }
        }
    }

1 Ответ

0 голосов
/ 20 января 2020

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

Это гарантировало бы поддержание вашей среды в чистоте независимо от промежуточных сбоев.

...