Jenkins groovy保留引号
各位, 我在Jenkins的环境变量上循环,并试图构建一个列表,然后传递到Jenkins groovy保留引号,jenkins,groovy,Jenkins,Groovy,各位, 我在Jenkins的环境变量上循环,并试图构建一个列表,然后传递到ytt,然后生成Kubernetes yml 如何建立保留引号的列表?i、 e.[foo.js,--delay,“40”] 目前,yml文件中的输出是scriptAndArgs:[foo.js,--delay,40] def argList = [] argList.add(env.SCRIPT_NAME) def args = env.SCRIPT_ARGS.split() args.each { item ->
ytt
,然后生成Kubernetes yml
如何建立保留引号的列表?i、 e.[foo.js,--delay,“40”]
目前,yml文件中的输出是scriptAndArgs:[foo.js,--delay,40]
def argList = []
argList.add(env.SCRIPT_NAME)
def args = env.SCRIPT_ARGS.split()
args.each { item ->
def arg = ""
if (item.isNumber()) {
arg = item.toString()
} else {
arg = item
}
argList.add(arg)
}
sh "echo scriptAndArgs: ${argList} >> values.yml"
谢谢
结果是scriptAndArgs:[…/foo.js,--delay,“40”]
这还可以绕过Jenkins的权限限制,比如list.inspect()
结果是scriptAndArgs:[…/foo.js,--delay,“40”]
这也绕过了限制执行list.inspect()之类的操作的权限如果您想编写YAML,这是JSON的超集,那么最好只编写一个JSON数组:
groovy.json.JsonOutput.toJson(["a", "b", 40]*.toString())
// ===> ["a","b","40"]
这种方法也确保了正确的报价
另一种方法是,inspect
,它是一种意外工作的内置方法,它试图将数据结构写得更接近人类输入的内容(这不是任何方式的序列化,只是为了调试,我在这里不使用它)
如果您想编写YAML,这是JSON的超集,那么最好只编写一个JSON数组:
groovy.json.JsonOutput.toJson(["a", "b", 40]*.toString())
// ===> ["a","b","40"]
这种方法也确保了正确的报价
另一种方法是,inspect
,它是一种意外工作的内置方法,它试图将数据结构写得更接近人类输入的内容(这不是任何方式的序列化,只是为了调试,我在这里不使用它)
env.SCRIPT\u ARGS
的值是多少?为什么40
应该在引号中,而foo.js
不应该在引号中?基本上,K8S在中爆炸,无法将int64转换为字符串。我通过构建一个字符串表示的数组来解决这个问题,env.SCRIPT\u ARGS
的值是多少?为什么40
应该在引号中,而foo.js
不应该在引号中?基本上,K8S在中爆炸,无法将int64转换为字符串。我通过构建一个由字符串表示的数组来解决这个问题
["a", "b", 40]*.toString().inspect()
// ===> ['a', 'b', '40']