У меня есть общая библиотека, которая печатает переменные из файла 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 на том же этапе.