Cuando está utilizando un proyecto de estilo libre, puede configurar que después de 20 minutos la compilación se cancele si no se concluye. ¿Cómo es esto posible con un proyecto de canalización de múltiples ramas de Jenkins?
fuente
Cuando está utilizando un proyecto de estilo libre, puede configurar que después de 20 minutos la compilación se cancele si no se concluye. ¿Cómo es esto posible con un proyecto de canalización de múltiples ramas de Jenkins?
Puede utilizar el paso de tiempo de espera :
timeout(20) {
  node {
    sh 'foo'
  }
}
Si necesita un valor diferente TimeUnita MINUTES , puede proporcionar el unitargumento:
timeout(time: 20, unit: 'SECONDS') {
EDITAR agosto de 2018: hoy en día, con las canalizaciones declarativas más comunes (reconocidas fácilmente por la pipelineconstrucción de nivel superior ), los tiempos de espera también se pueden especificar usando optionsen diferentes niveles (por canalización general o por etapa):
pipeline {
  options {
      timeout(time: 1, unit: 'HOURS') 
  }
  stages { .. }
  // ..
}
Aún así, si desea aplicar un tiempo de espera a un solo paso en una canalización declarativa, se puede usar como se describe anteriormente.
JENKINS_URL/job/<any Pipeline project>/pipeline-syntax/→ Referencia de paso .def n=Jenkins.instance.getNode("ETService3") if (n!=null && n.computer && n.computer.online) { echo "Online" } else { echo "Offline" // wait a little bit and try again }Una forma complicada es adquirir el nodo dos veces. La primera vez con tiempo de espera externo, la segunda con tiempo de espera interno. También me falta la función.Para una canalización declarativa , se recomienda utilizar el paso de tiempo de espera en la sección de opciones .
El paso de tiempo de espera tiene 3 parámetros que puede configurar:
time (obligatorio, int)
actividad (opcional, booleano)
unidad (opcional, valores: NANOSECONDS, MICROSECONDS, MILISECONDS, SECONDS, MINUTES, HOURS, DAYS)
Ejemplos:
La documentación oficial de Jenkins tiene un ejemplo muy bueno para el uso de un tiempo de espera:
fuente
activitytiene falso por defecto. Cuandoactivityes falso: tiempo de espera para todo el trabajo,truetiempo de espera para la actividad (para imprimir cualquier cosa en el registro).timeoutpara una etapa en particular de tal manera que la etapa siguiente se ejecute con gracia. En el ejemplo anterior, la canalización se cancela después del tiempo de espera y las etapas posteriores no se ejecutan. ¿Hay alguna forma de cumplir con mi requisito? Código de muestra para el tiempo de espera de una etapa determinada (del documento oficial de Jenkins):pipeline { agent any stages { stage('Example') { options { timeout(time: 1, unit: 'HOURS') } steps { echo 'Hello World' } } } }