Groovy читать json -файл, добавить новый ключ: значение и записать обратно (Jenkins) - PullRequest
0 голосов
/ 03 августа 2020

Я хочу прочитать строку json из файла, добавить новый ключ: значение и записать его обратно в файл. с groovy -скриптом во время сборки Jenkins. файл:

{"key1": "value1", "key2": "value2"}

Я пробовал следующее:

def setValue(String filepath, String key, value){
    String fileContent = readFile(filepath)
 
    Map jsonContent = (Map) new JsonSlurper().parseText(fileContent)
    jsonContent.put("${key}", "${value}")
 
    writeFile(file: filepath, text: JsonOutput.toJson(jsonContent))
}

, но получаю следующую ошибку:

exception: class java.io.NotSerializableException
[Pipeline] echo
message: groovy.json.internal.LazyMap

1 Ответ

1 голос
/ 04 августа 2020

Быстрый ответ

Вы можете использовать функции readJson и writeJson, как описано здесь .

Длинный ответ

Дженкинс время от времени to time поддерживает состояние конвейера, чтобы иметь возможность возобновить его в случае сбоя. На этом этапе резервного копирования он пытается сериализовать каждый элемент в текущем контексте конвейера. NotSerializableException уведомляет вас о том, что у вас есть несериализуемый объект в вашем контексте (стек или куча), который предотвращает сериализацию конвейера. Поэтому старайтесь использовать только сериализуемые объекты. Если это невозможно, вы можете аннотировать функции, использующие такие объекты, с помощью @NonCPS, чтобы сообщить Дженкинсу не пытаться создавать резервную копию конвейера во время выполнения этой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...