【发布时间】:2021-04-01 01:29:16
【问题描述】:
我有以下代码可以更新 Yaml 文件中的值
import org.yaml.snakeyaml.Yaml
String version = "1.0.0"
def data = readYaml file: "Chart.yaml"
data.name = "myApp"
// The version needs to be in double-quotes
data.appVersion = "\"${version}\""
sh "rm Chart.yaml"
writeYaml file: "Chart.yaml", data: data
sh "cat Chart.yaml"
所以我需要Chart.yaml 文件
appVersion = "1.0.0"
但是,上面的代码用额外的单引号把它放在了上面。
appVersion = '"1.0.0"'
同样的结果
data.appVersion = '"'+version+'"'
如果我有这个
data.appVersion = "${version}" // just string interpolation in this case
那我当然明白了,没有引号
appVersion = 1.0.0
【问题讨论】:
-
恐怕你必须在之后做一些魔术,因为 writeYaml 步骤不会改变标量样式(从我所见/读到的)。但是,您可以将其更改为
DOUBLE_QUOTED标量样式(使用 NonCSP 并明确设置),但随后所有内容都将被双引号:"appVersion": "1.0.0"。不幸的是,您的 yaml 文件中的布尔值也将转换为"name": !!bool "false"
标签: jenkins groovy yaml jenkins-pipeline jenkins-groovy