J'essaie d'analyser les fichiers YAML dans le pipeline Jenkins en utilisant la méthode readYaml du plugin Jenkins "Pipeline Utility Steps".
J'ai lu sur les forums que la méthode readYml devrait être appelée dans le bloc de nœuds du pipeline.
Avant de bricoler avec cette méthode readYml, mon pipeline fonctionnait parfaitement.
Mais après avoir ajouté readYml au bloc de nœuds de mon pipeline, j'obtiens l'erreur suivante.
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 5: Expected to find someKey "someValue" @ line 5, column 14.
node {
^
1 error
at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.Java:310)
at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.Java:1085)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.Java:603)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.Java:581)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.Java:558)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.Java:298)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.Java:268)
at groovy.lang.GroovyShell.parseClass(GroovyShell.Java:688)
at groovy.lang.GroovyShell.parse(GroovyShell.Java:700)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.Java:131)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.Java:125)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.Java:560)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.Java:521)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.Java:290)
at hudson.model.ResourceController.execute(ResourceController.Java:97)
at hudson.model.Executor.run(Executor.Java:421)
Je ne vous ennuierai pas avec le code de pipeline complet car le problème est vraiment après la modification de mon bloc de nœuds.
La façon dont j'appelle la méthode readYml des plugins est la suivante.
pipeline {
agent {
node {
label 'lsrv9557.linux.rabobank.nl'
customWorkspace '/appl/jenkins/workdir'
datas = readYaml file: "manifest.yml"
}
}
Comment puis-je obtenir que cela fonctionne correctement et se débarrasser de l'erreur?
Merci d'avance.
Le plus pratique était que le mien travaille avec des scripts Shell de base après avoir essayé de créer un modèle basé sur les chaînes javaISH.
$ cat logic/pipelines/obfuscate.sh
#!/bin/bash
echo "${REQUEST}" | json2yaml > "${PARAM_FILE}"
Puis en lisant ce PARAM_FILE dans des scripts plus loin:
---
#!/bin/bash
# improvised dynamic extraction
SOME=`yq -r .scope.some $PARAM_FILE`
echo -n "${SOME}"