我正在尝试在 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 理解它是字符串而不是整数吗?
我必须在使用整数的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