Azure devops 在Azure DevOps中使用--设置头盔覆盖列表值
如何在Azure DevOps中用--set param覆盖头盔列表中的值Azure devops 在Azure DevOps中使用--设置头盔覆盖列表值,azure-devops,azure-pipelines,kubernetes-helm,Azure Devops,Azure Pipelines,Kubernetes Helm,如何在Azure DevOps中用--set param覆盖头盔列表中的值 values.yaml中的简单用例: environment: - name: foo value: override_me - name: bar value: override_me - name: baz value: override_me 在deployment.yaml文件中,我这样使用它: env: {{ toYaml .Values.env
values.yaml中的简单用例:
environment:
- name: foo
value: override_me
- name: bar
value: override_me
- name: baz
value: override_me
在deployment.yaml
文件中,我这样使用它:
env:
{{ toYaml .Values.environment | indent 10}}
有一件事是这样的,但不是真的:
environment[0]。name=foo,environment[0]。value=hello,{…}
此重写的问题是,它将重写整个列表,即使我只想替换值[0]
,而不是[1]
和[2]
。
此外,当我传递url:s或int(不在本地主机上,仅在AZ DevOps上)时,我也会遇到解析错误-为了克服该配对错误,您可以使用\“
”将其转义-但随后图表会出错-即使它通过了验证
那么,在我的Azure DevOps helm部署中,有可能覆盖env列表吗?或者我需要将列表重新构造为单个key=value
对吗?在这样做时,我有一个奇怪的经历,在两个类似的情况下,一个情况下它替换了它们,另一个情况下覆盖了整个阵列。所以在第二个情况下,我必须做的是这样做s:
environment:
- name: v1
value: keep_me
- name: v2
value: keep_me
- name: v3
value: keep_me
- name: foo
value: override_me
- name: bar
value: override_me
我在Azure Devops中这样做:
--set environment[3].name=foo,environment[03.value=xxx
对于另一个,我不必这样做,它很乐意只覆盖我输入的值。不知道为什么会这样做。在任务中定义一些变量:
使用标准集:
我在一个发布管道中使用了一个bash任务,该任务指向一个deploy.sh文件,该文件作为已发布的工件存在
这就是我正在做的,但这将覆盖整个列表,当我想保留一些值时,如您用保留我值所示:/n不,注意我没有给它[0]
,我给它[3]
,以我的经验,它将只覆盖后面的值。因此,您要保留的值应该在列表的开头。我明白您的观点。但我敢打赌,如果我添加更多的env变量,并且忘记顺序非常重要,那么以后会导致问题。是的,这是真的。其他选项是直接使用som解析values.yamlething与powershellwell类似,它证实了您的发现并提供了一个解决方案;)