如何阅读詹金斯(Groovy)中的YAML字典

时间:2019-06-18 01:32:43

标签: jenkins groovy yaml jenkins-groovy

我有一个YAML文件:

project_name: my-project
project_version: 1.0
scan_path: 
    javascript: Core
    dotnet: Deadbolt
    dotnet: ServiceCatalog

我在詹金斯(Jenkins)读

data = readYaml file: "Jenkins/config.yml
scan_path = data[scan_path]

但是,当我检查地图时,它只有最后一个元素。

我的YAML文件格式不正确吗?

当我运行“ println(scan_path.size())”时,我只有1,并且

scan_path.each { k, v ->
                echo "${k}, ${v}"

仅返回“ dotnet,ServiceCatalog”

2 个答案:

答案 0 :(得分:0)

您可以使用snakeyaml库来解析yaml文件。

类似的问题已经回答here

另一种tutorial如何使用snakeyaml。

答案 1 :(得分:0)

最终为我工作的解决方案是将YAML配置更改为如下所示:

project_name: project_name
project_version: 1.0
scan_path: 
  - application: dotnet
    path: Core
  - application: dotnet
    path: Brickburn
  - application: dotnet
    path: ServiceCatalo

我保存到变量中

data = readYaml file: "Jenkins/config.yml
scan_path = data[scan_path]

这样访问:

scan_path.each { e ->
                echo "Translating ${e.getAt('application')} application 
${e.getAt('path')}"
}