Jenkinsfile записывает файл JSON

Из моего Jenkinsfile я пытаюсь создать и записать простой файл JSON в папку рабочей области.

Содержимое файла JSON должно быть:

{"people": {"name":"john","surname":"doe"}}

Любые идеи?

Вы должны просто иметь возможность записать это в файл вместо стандартного вывода? Вы рассматривали возможность использования StreamWriter? См. docs.groovy-lang.org/latest/html/documentation/…

Bruce Becker 31.10.2018 10:27

Можно ли сериализовать JsonBuilder? Я думал, что все классные методы класса JSON несериализуемы. Похоже, это будет ошибка.

Matt Schuchard 31.10.2018 13:40
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
2
12 694
3

Ответы 3

Вы можете использовать writeJSON: записывать JSON в файл в рабочей области.

https://jenkins.io/doc/pipeline/steps/pipeline-utility-steps/#writejson-write-json-to-a-file-in-the-workspace

Я пробовал это и получил следующую ошибку: java.lang.ClassCastException: org.jenkinsci.plugins.pipeline.utility.steps.json.WriteJSONS‌ tep.json ожидает интерфейс net.sf.json.JSON, но получил класс java. lang.String

JoP 31.10.2018 11:42

не могу вам помочь с java. Я добавлю тег Java к вопросу.

Eugene Mihaylin 31.10.2018 11:44

Я не использую Java, а использую старый добрый Groovy.

JoP 31.10.2018 11:51

платформа java, я добавил оба тега

Eugene Mihaylin 31.10.2018 11:54

@JoP Похоже, вы неправильно используете этот метод. Обновите свой вопрос?

Matt Schuchard 31.10.2018 13:39

Понятно!

script {
          def someMap = [
              'name' : "john",
              'surname' : "doe"
          ]
          def json = new groovy.json.JsonBuilder()
          json "people": someMap
          def file = new File("$WORKSPACE/people.json")
          file.write(groovy.json.JsonOutput.prettyPrint(json.toString()))
        }

Если вы не хотите использовать какой-либо плагин, есть обходной путь с основным методом Jenkins writeFile, например:

writeFile(
    file: "foo/bar.json",
    text: """\
        {
            'a': 'x',
            'b': 'y'
        }
    """.stripIndent()
)

Другие вопросы по теме