有没有办法在 yaml 文件中搜索密钥的任何实例

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

我目前正在尝试解决 yq 的问题,我们正在使用自动化流程更新 helm 图表的值文件。大多数值文件都具有以下格式的图像标签:

image:
  repository: repo-name
  tag: 0.0.1

我们正在更新:

yq -i e '.image.tag = env(TAG)' chart-name/values.yaml

然而,并非所有图表都遵循相同的格式,例如有些有:

controller:
  image:
    repository: repo-name
    tag: 0.0.1

我希望能够更新嵌套在 yaml 文件中的标记的值(如果可以使用 yq 或其他替代方案(如果可能的话))。

yaml kubernetes-helm yq
1个回答
2
投票

假设您使用的是 mikefarah/yq,您可以使用递归下降运算符来更新与名称匹配的任何键

tag

yq '( .. |  select(has("tag")).tag ) |= env(TAG)' yaml

不幸的是,

path
运算符不够高效(与jq不同),无法获取所有根到叶路径的路径并更新其值。

注意:如果您使用 yq 版本 4.18.1 或更高版本,不再需要 eval 标志

e
,因为它已成为默认操作。

© www.soinside.com 2019 - 2024. All rights reserved.