currentbuild - Jenkins Pipeline sh mostrar nombre/etiqueta
pipeline environment (8)
Con el complemento Jenkins 2 Pipeline, hay una característica útil que permite una visión general rápida de las etapas de la tubería y el estado de los pasos, incluida la salida de registro.
Sin embargo, si usa el paso "Shell script" (sh), no parece haber una manera de etiquetar ese script con un nombre útil, por lo que la pantalla simplemente muestra una larga lista de "Shell Script" (que se muestra en el imagen a continuación).
¿Cómo puedo asignar un nombre útil, o cómo puedo usar algún otro paso para lograr el mismo efecto?
Bueno, los tiempos desesperados requieren medidas desesperadas. Si puede usar Blue Ocean, puede usar el paso paralelo con una sola línea de ejecución.
parallel(
"This is my step name" : {
sh ''env''
}
)
Después de una excelente respuesta arenosa, creé un pequeño contenedor de script que encapsula el paso sh en un bloque try / finally.
Uso básico:
wrapper.script script: ''echo the invisible script'', returnStdout: true, stepName: "description #1"
Mostrará la "descripción # 1" en lugar del texto genérico.
Código fuente completo e instrucciones de instalación aquí https://github.com/ael-computas/jenkins-script-wrapper
Se puede instalar fácilmente como una biblioteca en su servidor jenkins.
La versión 2.28+ del
"
Complemento de
nodos y procesos de canalización"
ha obtenido la opción de
label
para el
paso
sh
ahora con
JENKINS-55410
:
etiqueta (opcional)
Etiqueta que se mostrará en la vista de paso de tubería y detalles del océano azul para el paso en lugar del tipo de paso. Por lo tanto, la vista es más significativa y específica del dominio en lugar de técnica.
- Tipo: Cadena
P.ej:
sh script: "echo foo", label: "my step"
Si aún no puede actualizar, otra opción es usar el complemento Pasos de tubería etiquetados .
No es perfecto, pero generalmente me parece adecuado agregar un paso de eco que describa lo que el siguiente paso de bat o sh está tratando de lograr. Alguien que nunca lo haya visto antes debería poder resolverlo rápidamente.
echo "Testing with Ping"
bat "ping www..com"
echo "Getting IPs"
bat "nslookup www..com"
Prueba esto, una buena solución
import org.jenkinsci.plugins.workflow.cps.CpsThread
import org.jenkinsci.plugins.workflow.actions.LabelAction
def test() {
def xyz = "Prints PWD"
try {
sh script: ''pwd''
}
finally {
CpsThread.current().head.get().addAction(new LabelAction("Shell script ${xyz} "))
}
}
También estaba intentando lo mismo, pero en un contexto diferente, mi equipo no quiere múltiples ventanas de registro sh sobre la interfaz de usuario de registro, así que intenté usar múltiples comandos UNIX en una línea, por ejemplo,
jenkinsPipeline.sh "echo /"PATH: $PATH/";java -version;echo PROJ DIR = $projectDirectory;env > env.txt;cat env.txt;ls && cd $projectDirectory && gradle --refresh-dependencies clean assemble"
Y funcionó para la secuencia de comandos de la tubería de Jenkins dentro de Jenkins trabajo.
pero si uso la biblioteca compartida para extender la canalización y la misma estrategia, entonces no funcionaba o creaba múltiples ventanas como de costumbre para la interfaz de usuario sh log.
Actualización de febrero de 2019 :
De acuerdo con la respuesta de gertvdijk a continuación , ahora es posible asignar una etiqueta opcional al paso sh , a partir de v2.28, y para aquellos que aún no pueden actualizar, también hay una solución alternativa. Por favor revise su respuesta para detalles y comentarios!
Versión anterior (pase el cursor para verlo):
Hasta donde yo sé, eso actualmente no es posible. En el rastreador de Jenkins, hay un problema de nombre o alias Shell Script Step (sh) que es similar a su situación:
El pasoSin embargo, se cerró como un duplicado del anterior Permitir que la etapa funcione como un bloque etiquetado que se ha solucionado recientemente y parece estar incluido en la v2.2 del plugin pipeline-stage-step-plugin (consulte el registro de cambios) .sh
agrega un paso "Shell Script" en la canalización. Sin embargo, podría haber múltiples pasos de este tipo, incluidos los pasos de varios complementos (por ejemplo, Docker), lo que dificulta la distinción de los pasos. Quizás deberíamos agregar un parámetro opcional a sh para especificar un nombre o alias que luego aparecería en los pasos de la tubería. por ejemplo, el siguiente puede ser el paso para npm que se mostrará como "Script de Shell: npm" en la vista de canalización.
sh cmd:"npm install", name: "npm"
Parece que las etapas ahora se pueden anidar y aparecerán en la tabla de vista, pero no creo que sea lo que está buscando.
sh "echo foo", label: "my step"
No funciona para mi
Debe ser:
sh script: "echo foo", label: "my step"
https://.com/a/54787322/6847446