如果发布没有要发布的内容,我如何命令Helm不要抛出错误?

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

我有一张头盔图部署到三个环境(开发,阶段和生产)。我正在像这样运行此命令:

helm upgrade --install --namespace=$DEPLOYMENT_ENV ingress-external-api -f ./ingress-external-api/values-$DEPLOYMENT_ENV.yaml ./ingress-external-api --atomic

$DEVELOPMENT_ENVdevstageprod的地方。

这里重要的事实是只有values-prod.yaml具有正确的yaml定义。其他所有values-dev.yamlstage都相同,因此将不会部署任何发行版。

导致以下掌舵错误:

+ helm upgrade --install --namespace=$DEPLOYMENT_ENV ingress-external-api -f ./ingress-external-api/values-$DEPLOYMENT_ENV.yaml ./ingress-external-api --atomic
Release "ingress-external-api" does not exist. Installing it now.
INSTALL FAILED
PURGING CHART
Error: release ingress-external-api failed: no objects visited
Successfully purged a chart!
Error: release ingress-external-api failed: no objects visited

进一步导致我的位桶管道停止并失败。

但是您也看到那没有帮助。

所以,我的问题是,如果找不到任何可替代其模板的内容,我该如何告诉舵手根本不抛出错误?

kubernetes-helm bitbucket-pipelines
2个回答
1
投票

我不确定这是否应由舵手负责。为什么要用缺少的值更新dev / stage?似乎有点奇怪。

如果您不打算在那里更新任何内容,只需在生产环境中运行一次即可。

[如果您坚持那样做,那么也有可能在Bash中“撒谎”您返回的代码并在流水线级别实现它。

Lie about exit status


0
投票

如果您真的不想部署任何东西,可以使用空的values.yaml文件,然后将if和loops添加到模板文件中。基本上,您必须用一个空结构填充values.yaml,例如:]

my-release:
    value:
    other-value:

然后您可以执行以下操作:

{{ if .Values.my-release.value }}
© www.soinside.com 2019 - 2024. All rights reserved.