Как обновить содержимое существующего файла yaml с помощью плагина Pipeline Utility Steps - PullRequest
0 голосов
/ 13 июня 2019

В моем конвейере jenkins я читаю данные, хранящиеся в файле yaml, с помощью Pipeline Utility Steps plugin

Я могу читать данные из файла, теперь я хочу обновить значение и записать его обратно в файл, например:

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 из моего скрипта, показанного выше?

1 Ответ

1 голос
/ 13 июня 2019

Похоже, вам нужно удалить или переименовать исходный файл перед тем, как перезаписать его, потому что метод writeYaml не имеет флага перезаписи.

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