Lazy loaded image
yaml 文件比较工具 jd, dyff
Words 561Read Time 2 min
2026-2-1
2026-2-1
date
related_level
slug
tools_yaml_diff
type
Post
relate_date
summary
yaml 文件比较工具 jd, dyff
status
Published
tags
版本管理
效率
category
运维管理
last_updated
Feb 1, 2026 05:21 PM
是否已更新
orginal_page
是否推荐
参考资料
 

yaml 文件差异比较

go 安装到 $(go env GOPATH)/bin
  • go install github.com/josephburnett/jd/v2/jd@latest
    • jd 支持 json 文件比较
  • go install github.com/homeport/dyff/cmd/dyff@latest
  • go install github.com/mikefarah/yq/v4@latest
    • 可选,也可以用于比较但需要熟悉 yq 对应语法
  • 以 jenkins 版本升级为例
添加 jenkins repo
  • helm repo add jenkinsci https://charts.jenkins.io
  • helm repo update
  • helm search repo jenkins
获取 jenkins 两个不同版本的 values 文件
  • helm show values jenkins/jenkins --version 5.8.115 > values.default-5.8.115.yaml
  • helm show values jenkins/jenkins --version 5.8.130 > values.default-5.8.130.yaml
可选:如果需要获取当前安装的用户定义 values 文件
  • helm get values <RELEASE_NAME> -n <NAMESPACE>
    • 默认只会输出用户显式设置的值,不包含默认值,也不包含安装后手动修改的部分
    • --all 包含默认值
    • --revision=<num> 获取历史版本的 values
      • helm history <RELEASE_NAME> -n <NAMESPACE>
通过 dyff 查看差异,dyff 目前仍旧无法生成补丁文件
  • dyff between --omit-header values.default-5.8.115.yaml values.default-5.8.130.yaml > diff.patch
cat diff.patch
  • 可以看到更新了哪些部分
通过 jd 查看差异并生成补丁文件
  • jd -yaml -f jd -o diff-5.8.115_5.8.130.patch.jd \ values.default-5.8.115.yaml values.default-5.8.130.yaml
    • 生成 jd v2 格式补丁文件
    • -f 指定输出文件格式,可选
      • jd
      • "merge" (RFC 7386)
      • "patch" (RFC 6902)
cat diff-5.8.115_5.8.130.patch.jd
  • 可以看到更新了哪些部分
  • jd -t jd2patch diff-5.8.115_5.8.130.patch.jd > diff.patch
    • jd 格式转换为 patch 格式
    • -t 可以支持以下格式之间的转换
      • "jd", "patch" (RFC 6902) and "merge" (RFC 7386), "json" and "yaml"
      • 通过 2 来隔开输入和输出格式,如 jd2patch 即 jd 格式转换为 patch 格式
jd 应用补丁文件,注意会丢失现有注释和顺序
  • jd -yaml -p diff-5.8.115_5.8.130.patch.jd values.default-5.8.115.yaml > values.upgrade-5.8.130.yaml
  • jd -yaml values.upgrade-5.8.130.yaml values.default-5.8.130.yaml
    • 查看应用补丁后的升级版本和原始版本的差异
    • 没有输出说明没有差异
 
上一篇
helm drift 排查
下一篇
Exercism 编程学习平台

Comments
Loading...