gpt4 book ai didi

jenkins - 如何使用 Pipeline Utility Steps 插件更新现有 yaml 文件的内容

转载 作者:行者123 更新时间:2023-12-05 01:40:27 25 4
gpt4 key购买 nike

在我的 jenkins 管道中,我正在使用 Pipeline Utility Steps 读取存储在 yaml 文件中的数据。插件

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

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 已经存在:

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 文件的内容?

最佳答案

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

sh '''
if [ -e Version.yaml ]; then
rm -f Version.yaml
fi
'''

关于jenkins - 如何使用 Pipeline Utility Steps 插件更新现有 yaml 文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56580547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com