Resultado de ejecución del script de Python en la tubería de Jenkins
Tengo un pipeline de Jenkins donde tengo 2 etapas:
pipeline {
agent {label 'master'}
stages ('stage 1') {
stage {
steps {
sh "python3 script.py" //este script devuelve el valor {"status": "ok"}
}
}
stage ('stage 2') {
// Hacer algo con el JSON de respuesta de script.py
}
}
}
El problema es que no puedo hacerlo. Lo que he intentado:
1. Pasar el resultado a una variable de entorno, pero por alguna razón, Jenkins no lo reconoció. ¿Quizás hice algo mal aquí?
2. Analizar y leer la salida estándar de script.py no es una opción, porque este script imprime muchos registros.
La única opción que queda es crear un archivo para almacenar ese JSON y luego leer ese archivo en el siguiente paso, pero es feo.
¿Alguna idea?
davy.ai
Una posible solución a este problema podría ser utilizar el complemento “Jenkins Pipeline Utility Steps”, específicamente el paso
readJSON
. Este paso te permite leer un archivo JSON y analizarlo como un mapa dentro de tu script de pipeline.Para utilizar este paso, debes modificar tu pipeline de la siguiente manera:
Esta solución evita la necesidad de analizar la salida del script desde stdout, al mismo tiempo que te permite acceder fácilmente a los datos de respuesta en la siguiente etapa del pipeline.