You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Jenkins的readYaml、writeYaml工具时YAML前置空格丢失如何解决?

Jenkins使用readYaml/writeYaml更新YAML丢失格式的解决方法

问题根因

  • Jenkins Pipeline 内置的 writeYaml 步骤基于SnakeYAML实现,默认缩进配置、引号处理规则不符合常规YAML书写规范,导致输出格式错乱
  • 手动给字段值添加引号的操作会导致二次转义,进一步加剧格式异常

修复方案

方案1:调整writeYaml参数(无需额外工具)

修改你的Pipeline代码如下:

def yamlDev = readYaml file: "requirements.yaml"
yamlDev.dependencies.each{
        if (it.name.equals('value'))
              // 移除手动添加的双引号,交给writeYaml统一处理
              it.version = "<=${Version.toString()}"
}
sh "rm requirements.yaml" 
// 新增indent指定缩进为2,quoteChar指定字符串用双引号包裹
writeYaml file: 'requirements.yaml', data: yamlDev, indent: 2, quoteChar: '"'

方案2:使用yq工具修改(兼容性更强,不会破坏原有格式)

如果调整参数后仍有格式问题,建议直接使用yq命令行工具修改YAML,无需经过Jenkins的序列化/反序列化步骤,完全保留原有格式:

sh """
yq e '.dependencies[] |= (select(.name == "value") | .version = "<=${Version.toString()}")' -i requirements.yaml
"""

注:使用该方案需要提前在Jenkins执行节点上安装yq工具

内容的提问来源于stack exchange,提问作者aymen0406

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:36:03