在 Jenkins 管道 Groovy 中,如何在 YAML 文件中将值设置为带引号的字符串?
In Jenkins pipeline Groovy, how can I set a value as a quoted string in a YAML file?
我有以下代码更新 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
"""
我有以下代码更新 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
"""