Tengo un trabajo de Jenkins para detener una aplicación de nodo, implementar código e iniciar la aplicación.
El inicio/detención se realiza con un script Upstart.
Uso initctl stop node-App
Si el trabajo se está ejecutando, esto funciona muy bien. Pero si la aplicación ha muerto o está detenida, el resultado es initctl: Unknown instance:
Esto hace que el trabajo de Jenkins falle y no continúe con los siguientes pasos.
¿Hay alguna forma de verificar si el trabajo se inició antes de emitir el comando de inicio? ¿O hay alguna manera de que Jenkins no lo considere un error y falle el trabajo?
A un colega se le ocurrió una gran solución.
if ( initctl status node-App | grep start ); then initctl stop node-App fiMuy simple y funciona correctamente cuando se ejecuta desde Jenkins.
Estoy usando una construcción similar
initctl stop node-App || echo "node-App was not running"