Jenkins 如果存在,卸载舵以移除释放装置
我正在使用头盔3,我有3个不同的值。每个环境的yaml。如果我的初始版本在运行Jenkins 如果存在,卸载舵以移除释放装置,jenkins,jenkins-pipeline,kubernetes-helm,Jenkins,Jenkins Pipeline,Kubernetes Helm,我正在使用头盔3,我有3个不同的值。每个环境的yaml。如果我的初始版本在运行helm升级时以失败状态结束,以避免出现错误--安装myapp dev,我希望删除相关环境的版本(如果存在) 因此,根据下面的脚本,如果部署阶段成功运行,那么它将卸载下一阶段的版本。根据前一阶段的“在发生故障的情况下”操作的最佳实践是什么?我应该使用try/catch块还是post部分?同时,在什么情况下我真的应该使用这种清洁剂 stage('Deploy to staging'){
helm升级时以失败状态结束,以避免出现错误--安装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"
}
}
}
在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
}
}
这将保证无论中间出现什么故障,您的环境都保持干净。我可以在类似的阶段(如开发和生产阶段)使用post section吗。我的部署到生产环境和部署到开发环境的阶段相同。或者我应该在同一个post部分中运行命令的其余部分,例如helm uninstall myapp prod
post
实际上适用于整个管道,而不是单独的阶段。因此,如果您有安装到单独测试环境的阶段,您可能希望在文章的后一节中对所有阶段进行清理。显然,对于生产,您实际上不想卸载
。因此混淆的是前一阶段进行部署,然后post部分将再次卸载它。我的意思是它将卸载以前安装的版本。我想我需要指定一些条件