首页 > 解决方案 > 如何在 Groovy 脚本中查找在 yaml 文件中定义的映射并分配给从 Pipeline UI 提供的基于变量的输入

问题描述

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

例如:

我有它包含的 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 脚本的额外变量文件传递,谢谢。

标签: groovyjenkins-groovy

解决方案


你确定这是一个有效的 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


推荐阅读