Jenkins writeYaml未替换yaml文件中的值

bt1cpqcv  于 2023-02-18  发布在  Jenkins
关注(0)|答案(1)|浏览(247)

我有一个具有以下结构的yaml文件:

transfers:
- name: xyz
  cloud: aws
  subheading:
    impact: Low
    reason: ---

  artifacts:
  - name: name1
    type: type1
    source:
      hash: a1b2C3dd4    ---> VALUE TO OVERWRITE

我想用最新的GIT_COMMIT值覆盖现有的哈希值。
我已经从下面的问题尝试了这个方法:write yaml file in jenkins with groovy。但是,hash[0][0]的值保持不变。即使我用测试哈希字符串“testHash123”替换env.GIT_COMMIT,情况也是如此。我不确定为什么会出现这种情况?

def filename = ('path/to/file.yaml')
def datas = readYaml file: filename
//change hash
datas.transfers['artifacts'].source.hash[0][0] = env.GIT_COMMIT
writeYaml file: filename, data: datas, overwrite: true
9jyewag0

9jyewag01#

请尝试以下操作。

datas.transfers[0]['artifacts'][0]['source'].hash = env.GIT_COMMIT

最简单的方法是打印出来,这样你就能理解结构了。

[transfers:[[name:xyz, cloud:aws, subheading:[impact:Low, reason:xxxx], artifacts:[[name:name1, type:type1, source:[hash:a1b2C3dd4]]]]]]

正如您在上面看到的,传输是一个序列,因此您需要使用索引提取正确的段。

相关问题