在Jenkins脚本化管道中编写Yaml文件

在Jenkins脚本化管道中编写Yaml文件,yaml,jenkins-pipeline,Yaml,Jenkins Pipeline,我有一个yaml文件,它是作为代码的新加载性能测试脚本的开始 name: TestFile servers: - name: myserver host: myhost.world.com scheme: https 我希望Jenkins基于前面步骤/管道中的变量构建yaml文件。我已经看到writeYaml可以做我想做的事情,而且它似乎相当容易使用。这就是我目前所拥有的 script{ def map = ['name':'TestFile] map.put('nam

我有一个yaml文件,它是作为代码的新加载性能测试脚本的开始

name: TestFile
servers:
- name: myserver
  host: myhost.world.com
  scheme: https
我希望Jenkins基于前面步骤/管道中的变量构建yaml文件。我已经看到writeYaml可以做我想做的事情,而且它似乎相当容易使用。这就是我目前所拥有的

script{
    def map = ['name':'TestFile]
    map.put('name','myserver')
    writeYaml, file: filename, data: map
}
def工作得很好,但我不能完全掌握将“servers”部分添加到map对象的语法。根据上面的内容,我只需在文件中输入名称:myserver

我试过了

map.put("servers", new String[] {"name","myserver"})
但它不会编译(意外的标记“name”),我假设是因为我试图在脚本管道中使用错误的语言


我也很感激,我可以对文件执行等效的“写行”来生成YAML,但是这个文件变得更加复杂,所以我更喜欢使用这种基于对象的方法

给定一个现有的Groovy映射,其键值对为
['name':'TestFile]
,您可以使用不同的语法向该映射添加键值

要生成所需的YAML,您需要一个带有一个元素数组(
-
表示YAML中的数组类型)的
servers
附加键。该数组的成员元素应该是包含所有键值对的另一个映射

您需要将
['servers':[['name':'myserver','host':'myhost.world.com','scheme':'https']]]
附加到地图中。该语法中有三个
[]
;第一个和第三个表示地图,第二个表示列表<代码>服务器是第一个映射中的键,值是列表。列表的唯一元素是键值对的映射。三个键值对构成该列表元素中的映射

给定将键值对附加到映射的两种常见语法,您可以执行以下任一操作:

map['servers'] = [['name': 'myserver', 'host': 'myhost.world.com', 'scheme': 'https']]


以获得所需的结果。

defmap=['name':'TestFile]
中是否缺少撇号?你能试试defmap=['name':'TestFile']吗?
map.servers = [['name': 'myserver', 'host': 'myhost.world.com', 'scheme': 'https']]