我有一个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]
但是当我检查Map时,它只包含最后一个元素。
我的YAML文件格式不正确吗?
当我运行“println(scan_path.size())”时,我只得到1,而
scan_path.each { k, v ->
echo "${k}, ${v}"
仅返回“点网,服务目录”
3条答案
按热度按时间kiayqfof1#
最终对我有效的解决方案是将我的YAML配置改为如下所示:
我将其保存到变量中
访问方式如下:
oxf4rvwz2#
这里的问题是scan_path是一个Map,因此要访问它的键,请使用scan_path.key;要访问它的值(在本例中为Map列表),请使用scan_path. value。
我更喜欢这样:
注意:如果使用for(x in y){echo“x.key,x.value”},则可能会出现错误
请参阅:Jenkins Pipeline: How do I use the sh module when traversing a map?
4ktjp1zp3#
你可以使用snakeyaml库来解析yaml文件。
类似的问题已经得到回答here。
另一个tutorial如何使用snakeyaml。