如何在Groovy脚本中查找yaml文件中定义的映射,并分配给Pipeline UI提供的基于变量的输入

问题描述 投票:0回答:1

如何将变量映射从yaml文件传递到jenkins文件中的变量,或者只打印在文本文件中。

对于Ex:

我有test.yaml文件,它包含:

processor-create:
{
service: true
ingress: true
path: /tmp/data
},
processo-update:
{
service: false
ingress: false
path: /tmp/data
}

我将提供输入service_name:processor-create作为管道中的参数,它必须在test.yaml中查找该服务,然后无论变量具有“processor-create”它应该分配给变量还是打印到另一个文本文件中,以便我将在下一阶段将该文件作为ansible脚本的额外变量文件传递,谢谢。

groovy jenkins-groovy
1个回答
0
投票

你确定这是一个有效的yaml文件吗?对我来说,正确的语法必须是:

processo-update: 
    ingress: false
    path: /tmp/data
    service: false
processor-create: 
    ingress: true
    path: /tmp/data
    service: true

解析yml你可以使用snakeyaml,类似于:

  @Grab('org.yaml:snakeyaml:1.17')
  import org.yaml.snakeyaml.Yaml

  Yaml parser = new Yaml()

  map = parser.load( new File('text.yml').text )
  println map[args[0]]

阅读这篇文章更详细的例子:https://groovy-lang.gitlab.io/101-scripts/basico/config_script-en.html

© www.soinside.com 2019 - 2024. All rights reserved.