Jenkins groovy保留引号

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 ->

各位, 我在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 ->
  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']