在Jenkins管道Groovy中,如何在YAML文件中将值设置为带引号的字符串



我有以下代码更新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

以下是我根据Unforgetable631的建议所做的。

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
sed -i "s/$version/\"$version\"/g" Chart.yaml
cat Chart.yaml
"""

最新更新