Ejecute el script de Shell después de la compilación posterior en Jenkins


81

Estoy tratando de ejecutar un script de shell si la compilación pasa o falla después de la compilación en Jenkins. No puedo ver esta opción en la compilación posterior para ejecutar algún script de shell, excepto para ejecutar un objetivo.

Respuestas:


67

Se hace muy fácilmente con el complemento de tareas de creación de publicaciones .

Jenkins: opción "Publicar tarea de compilación"


48
En su lugar, recomendaría el complemento PostBuildScript para simplemente ejecutar un script. Es más simple y robusto si no necesita condicionar la salida del registro. Por ejemplo, permite ejecutar cualquier paso de compilación en las acciones posteriores a la compilación.
Sampo

9
También tenga en cuenta que el complemento Post Build Task coloca toda la salida de la consola en la memoria para hacer la prueba condicional ... que puede ocupar mucha memoria si tiene cientos de trabajos que producen una gran cantidad de resultados ... Nuestro maestro jenkins acaba de fallar debido a este complemento ...
grayaii

1
El complemento PostBuildScript se ha suspendido.
Abierto el

@Upen, ¿puede proporcionar un enlace que demuestre eso?
Vadim Kotov

10

También puede ejecutar comandos arbitrarios utilizando Groovy Post Build , y eso le dará mucho control sobre cuándo se ejecutan, etc. Usamos eso para ejecutar un script de shell de 'dedo de la culpa' en el caso de compilaciones fallidas o inestables.

if (manager.build.result.isWorseThan(hudson.model.Result.SUCCESS)) {
  item = hudson.model.Hudson.instance.getItem("PROJECTNAMEHERE")
  lastStableBuild = item.getLastStableBuild()
  lastStableDate = lastStableBuild.getTime()
  formattedLastStableDate = lastStableDate.format("MM/dd/yyyy h:mm:ss a")
  now = new Date()
  formattedNow = now.format("MM/dd/yyyy h:mm:ss a")
  command = ['/appframe/jenkins/appframework/fob.ksh', "${formattedLastStableDate}", "${formattedNow}"]
  manager.listener.logger.println "FOB Command: ${command}"
  manager.listener.logger.println command.execute().text
}

(Nuestro comando toma la última fecha de compilación estable y la hora actual como parámetros para que pueda investigar quién pudo haber roto la compilación, pero podría ejecutar los comandos que desee de manera similar)


6

Si estoy leyendo bien su pregunta, desea ejecutar un script en la parte de acciones posteriores a la compilación de la compilación.

Yo mismo uso el complemento PostBuildScript para ejecutarlo git clean -fxddespués de que la compilación haya archivado los artefactos y publicado los resultados de las pruebas. Mis esclavos Jenkins tienen discos SSD, por lo que no tengo la sala para mantener los archivos generados en el espacio de trabajo.



1

Tendría que configurar el script de shell posterior a la compilación como un trabajo de Jenkins separado y activarlo como un paso posterior a la compilación. Parece que necesitará utilizar el complemento de activación parametrizado, ya que la opción estándar "Crear otros proyectos" solo funciona si la generación de activación es correcta.


¿Cómo puedo activar el script si la compilación falla exclusivamente en función del script de shell ejecutable que tengo en mis tareas de trabajo? Gracias
topgun

Pensando en esto, podría ser más fácil de controlar en el propio script de compilación. ¿Qué marco de construcción estás usando?
gareth_bowles
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.