Helm 中的字符串变量

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

我正在尝试在 Jenkins 中运行以下 groovy 脚本:

    def test() {
    def RV1 = '\"' + "$RELEASE_VERSION" + '\"'
    echo RV1

    sh """
       helm upgrade --install -f container-root/helm/values-dev-caas.yaml --set image.registry=docker-reg --set-string image.version=""" + RV1 + """ test_app container-root/helm --namespace test --debug
    """

结果在 Jenkins 日志中:

helm upgrade --install -f container-root/helm/values-dev-caas.yaml --set image.registry=docker-reg --set-string image.version=202305251424 test-app container-root/helm --namespace test --debug

导致错误提示

Error: UPGRADE FAILED: unable to decode "": json: cannot unmarshal number into Go struct field ObjectMeta.metadata.labels of type string

echo RV1的结果是“202305251424”

在 RV1 变量中,我尝试将“(双引号)添加到我的 image.version 中,因为如果我有 image.version="202305251424" 而不是 image.version=202305251424 它会起作用,但不知何故双引号得到当我运行管道时消失了。

如果我使用这个:

def RV1 = '\'' + '\"' + "$RELEASE_VERSION" + '\"' + '\''

echo 中的结果是“202305251510”,最终的命令在 Jenkis 日志中如下所示:

helm upgrade --install -f container-root/helm/values-dev-caas.yaml --set image.registry=docker-reg --set-string 'image.version="202305251510"' test_app container-root/helm --namespace test --debug

导致错误:

Error: UPGRADE FAILED: YAML parse error on helm/templates/deployment.yaml: error converting YAML to JSON: yaml: line 72: did not find expected key

你知道如何在 groovy 中的 sh 中添加双引号或者如何让 Helm 理解它是字符串而不是整数吗?

jenkins groovy kubernetes-helm
1个回答
0
投票

我必须在使用整数的deployment.yaml中添加引号来解决这个问题。

labels:
  image-version: {{ .Values.image.version | quote }}

然后我可以在图像中使用整数。版本:

helm upgrade --install -f container-root/helm/values-dev-caas.yaml --set image.registry=docker-reg --set-string image.version=202305251424 test-app container-root/helm --namespace test --debug
© www.soinside.com 2019 - 2024. All rights reserved.