java.io.NotSerializableException: org.yaml.snakeyaml.Yaml - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть общая библиотека, которая печатает переменные из файла yml.

       def getHelmSvc(Map helmSvc,String mservice){
                def domain = helmSvc[mservice].domain
                def microservice_name = helmSvc[mservice].microservice_name
                def ingress_required = helmSvc[mservice].ingress_required
                def var_map = [:]
                var_map['microservice_name'] = microservice_name
                var_map['ingress_required'] = ingress_required
                return var_map

        }

Я звоню выше библиотеки в jenkinsfile:

         text1=new File('/jenkins/workspace/helm/helm_svc.yml').text

                    Yaml yaml = new Yaml()
                    def obj = yaml.load(text1)

                    ret=getHelmSvc(obj, mservice)
                    println ret

это печать карты переменных из yml на консоли, позже я пытаюсь распечатать эти значения в текстовый файл с помощью оболочки, это не удается из-за проблемы с сериализацией.

В основном это печать на консоли, как это:

          {microservice_name=some-processor, ingress_required=false}

Позже я использую оболочку для печати вв текстовом файле произошла ошибка с сериализацией.

          sh("""
                      echo "$ret" >  "/jenkins/workspace/helm/map.txt"
          """)

Ошибка:

           an exception which occurred:
in field com.cloudbees.groovy.cps.impl.BlockScopeEnv.locals
in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@2b3f4d48
in field com.cloudbees.groovy.cps.impl.CallEnv.caller
in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@2ee0ffec
in field com.cloudbees.groovy.cps.Continuable.e
in object org.jenkinsci.plugins.workflow.cps.SandboxContinuable@108a4042
in field org.jenkinsci.plugins.workflow.cps.CpsThread.program
in object org.jenkinsci.plugins.workflow.cps.CpsThread@28b2f39d
in field org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.threads
in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@1a7da7eb
in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@1a7da7eb
        Caused: java.io.NotSerializableException: org.yaml.snakeyaml.Yaml

Если мы используем вышеупомянутую команду оболочки на другом уровне сценария, она работает, она не работает, только если мы добавляемтот же уровень сценария, на котором загружается файл yaml.

" mservice = some-service ", предоставляемый в качестве параметра конвейера.

В основном у нас есть файл с именем / jenkins / workspace / helm/helm_svc.yml, в нем есть набор переменных, определенных на карте

      processor-create:
        microservice_name: processor-create
        service_required: true
        ingress_required: false
      processor-update:
        microservice_name: processor-update
        service_required: true
        ingress_required: false
        scheduler_required: false
      service-create:
        microservice_name: service-create
        service_required: true
        ingress_required: true
        scheduler_required: false

Я пытаюсь предоставить входные данные из параметра конвейера (например, процессор-создание), основываясь на том, что он получит значения из abovЕсли файл и назначить переменную ret, то нам нужно вывести значение этой переменной в текстовый файл, чтобы я предоставил этот текстовый файл в ANISIB playbook на том же этапе.

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