首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用管道实用程序步骤插件更新现有yaml文件的内容

如何使用管道实用程序步骤插件更新现有yaml文件的内容
EN

Stack Overflow用户
提问于 2019-06-13 12:30:43
回答 2查看 7.3K关注 0票数 3

在我的jenkins管道中,我正在使用管道实用步骤插件读取yaml文件中存储的数据。

我可以从文件中读取数据,现在我想更新该值并将其写回文件,如下所示:

代码语言:javascript
复制
pipeline {
agent any

stages {

    stage('JOb B ....'){
        steps{
            script{
               def datas = readYaml file:"${WORKSPACE}/Version.yml"
               echo datas.MAJOR_VERSION //output is 111

               datas = ['MAJOR_VERSION': '222']
               writeYaml file:"${WORKSPACE}/Version.yml", data: datas
            }
        }//steps
    }//stage

}//stages

}//pipeline

但是我遇到了错误-- Version.yml已经存在了:

代码语言:javascript
复制
java.nio.file.FileAlreadyExistsException: /var/lib/jenkins/workspace/t-cicd-swarm-example_hdxts-job-B/Version.yml already exist.
at org.jenkinsci.plugins.pipeline.utility.steps.conf.WriteYamlStep$Execution.run(WriteYamlStep.java:175)
at org.jenkinsci.plugins.pipeline.utility.steps.conf.WriteYamlStep$Execution.run(WriteYamlStep.java:159)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE

它似乎只能写一个新的文件,不能覆盖现有的文件。如何从上面显示的脚本中更新现有yaml文件的内容?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-13 20:34:13

看起来您需要在覆盖原始文件之前删除或重命名它,因为writeYaml方法没有覆盖标志。

代码语言:javascript
复制
sh '''
  if [ -e Version.yaml ]; then
    rm -f Version.yaml
  fi
'''
票数 3
EN

Stack Overflow用户

发布于 2020-09-16 06:04:40

根据最新的文件。有一个参数可以用来覆盖指定文件的内容:

代码语言:javascript
复制
writeYaml: Write a yaml from an object.
...
overwrite (optional): Allow existing files to be overwritten. Defaults to false.

请参阅:https://www.jenkins.io/doc/pipeline/steps/pipeline-utility-steps/#writeyaml-write-a-yaml-from-an-object

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56580547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档