¿Cómo programo trabajos en Jenkins?

284

Agregué un nuevo trabajo en Jenkins, que quiero programar periódicamente.

Desde Configurar trabajo , estoy marcando la casilla de verificación "Construir periódicamente" y en el campo de texto Programar agregué la expresión:

15 13 * * *

Pero no se ejecuta a la hora programada.

¿Es el procedimiento correcto para programar un trabajo?

Ingrese la descripción de la imagen aquí

El trabajo debe ejecutarse a las 4:20 a.m., pero no se está ejecutando.

Sangram Anand
fuente
¿Corre o NO corre? Su cron dice "Todos los días a las 13:15" si no recuerdo mal. Y sí: considero que esta es la forma correcta de programar compilaciones periódicas.
Fildor
1
Tal vez esto te ayude: en.wikipedia.org/wiki/Cron#CRON_expression - Veo que Cedric ya lo ha vinculado ... Tal vez deberías decirnos, ¿cuál es el período previsto?
Fildor
1
Como referencia, el signo de interrogación azul en el RHS revela una buena explicación de los posibles valores
devstopfix el
Aquí hay una buena página web para autogenerarse -> crontab-generator.org
Fabián Carrasco

Respuestas:

506

Al establecer el período de programación, 15 13 * * *le dice a Jenkins que programe la compilación todos los días de cada mes de cada año en el minuto 15 de la hora 13 del día.

Jenkins usó una expresión cron , y los diferentes campos son:

  1. MINUTOS Minutos en una hora (0-59)
  2. HORAS Horas en un día (0-23)
  3. DÍA MES Día en un mes (1-31)
  4. MES Mes en un año (1-12)
  5. DAYWEEK Día de la semana (0-7) donde 0 y 7 son domingos

Si desea programar su compilación cada 5 minutos, esto hará el trabajo: */5 * * * *

Si desea programar su construcción todos los días a las 8h00, esto hará el trabajo: 0 8 * * *

Para las últimas versiones (2014), Jenkins tiene un nuevo parámetro H(extracto de la documentación del código de Jenkins ):

Para permitir que las tareas programadas periódicamente produzcan una carga uniforme en el sistema, el símbolo H(para "hash") debe usarse siempre que sea posible.

Por ejemplo, el uso 0 0 * * *de una docena de trabajos diarios causará un gran aumento a la medianoche. En contraste, el uso H H * * *seguiría ejecutando cada trabajo una vez al día, pero no todos al mismo tiempo, mejor usando recursos limitados.

Tenga en cuenta también que:

El Hsímbolo puede considerarse como un valor aleatorio en un rango, pero en realidad es un hash del nombre del trabajo, no una función aleatoria, por lo que el valor permanece estable para cualquier proyecto dado.

Más ejemplo de uso de 'H'

Cédric Julien
fuente
55
Entonces, ¿cómo construir periódicamente después de cada 6 horas. ¿ * */6 * * *Funcionará?
2013
1
@ ѕтƒ: sí, lanzará la compilación cada 6 horas
Cédric Julien
31
Distribuya la carga de manera uniforme usando 'H / 5 * * * *' en lugar de '* / 5 * * * *'
friederbluemle
1
Si desea limitar el rango de H, puede usar H (1-3), por ejemplo, para elegir un número entre 1 y 3. El ejemplo sería HH (1-3) * * * para ejecutar una vez entre 1am y 3am
AndyClaw
16
Frustrantemente, parece haber algo en mi cerebro que simplemente no puede comprender estas expresiones sin tener que consultar constantemente los documentos.
Habilidad M2
34

Jenkins le permite configurar varias veces, separadas por saltos de línea.

Si necesita construirlo diariamente a las 7 a.m., junto con todos los domingos a las 4 p.m., lo siguiente funciona bien.

H 7 * * *

H 16 * * 0
Pawan Gaitonde
fuente
1
H (0-0) 6 * * 1 (para correr a las 6 a.m. ET el lunes), H (0-0) 16 * * 0 (a las 4 p.m. ET el domingo). Ejecutando H 16 sin formato (no se ejecutará a las 1600 / 4pm), debe usar H (0-0) 16 ....
AKS
2
@ArunSangal en lugar de H(0-0)usted, simplemente puede usar 0la ventaja de usar Hes que no todos los trabajos intentarán ejecutarse al mismo tiempo exactamente, sino que tratarán de obtener "el próximo intervalo de tiempo disponible"
derHugo
28

*/5 * * * * significa cada 5 minutos

5 * * * * significa el quinto minuto de cada hora

Nikul Padhya
fuente
26

El formato es el siguiente:

MINUTO (0-59), HORA (0-23), DÍA (1-31), MES (1-12), DÍA DE LA SEMANA (0-6)

La letra H, que representa la palabra Hash, se puede insertar en lugar de cualquiera de los valores. Calculará el parámetro en función del código hash del nombre de su proyecto.

Esto es para que si está creando varios proyectos en su máquina de compilación al mismo tiempo, digamos medianoche cada día, no todos comienzan su ejecución de compilación al mismo tiempo. Cada proyecto comienza su ejecución en un minuto diferente dependiendo de su código hash.

También puede especificar el valor entre números, es decir, H (0,30) devolverá el código hash del proyecto donde los posibles hash son 0-30.

Ejemplos:

  1. Comience a construir diariamente a las 08:30 de la mañana, de lunes a viernes: 30 08 * * 1-5

  2. Día de la semana, construcción diaria dos veces al día, a la hora del almuerzo 12:00 y medianoche 00:00, de domingo a jueves: 00 0,12 * * 0-4

  3. Comience a construir todos los días a última hora de la tarde entre las 4:00 p.m. y las 4:59 p.m. o de 16:00 a 16:59 según el hash del proyecto: H 16 * * 1-5

  4. Comience a construir a medianoche: @midnight o comience a construir a medianoche, todos los sábados: 59 23 * * 6

  5. Cada primero de cada mes entre las 2:00 a.m. y las 02:30 a.m.: H (0,30) 02 01 * *

Nagarjuna Yalamanchili
fuente
1
Buena explicación
vivek
10

Los pasos para programar trabajos en Jenkins:

  1. haga clic en "Configurar" del requisito de trabajo
  2. desplácese hacia abajo hasta " Build Triggers " - subtítulo
  3. Haga clic en la casilla de verificación de Build periódicamente
  4. Agregue horario en el campo Horario, por ejemplo, @midnight

ingrese la descripción de la imagen aquí

Nota : en el campo de programación, puede ver la última y la próxima ejecución de fecha y hora.

Jenkins también admite alias predefinidos para programar la compilación:

@hourly` @daily` @weekly` @monthly`@midnight

@hourly -> Construir cada hora al comienzo de la hora -> 0 * * * *

@daily, @midnight -> Construir todos los días a medianoche -> 0 0 * * *

@weekly -> Construir todas las semanas a la medianoche del domingo por la mañana -> 0 0 * * 0

@monthly -> Construir todos los meses a la medianoche del primer día del mes -> 0 0 1 * *

Gavriel Cohen
fuente
a medianoche es genial :) Jenkins parece reconocer bastantes valores especiales a partir de @ incluyendo @daily. ¿Puedes publicar un enlace a la lista definitiva?
chrisinmtown el
@chrisinmtown, se agregó una lista de alias predefinidos, espero que sea útil para usted :)
Gavriel Cohen
7

Para programar un trabajo cron cada 5 minutos, debe definir la configuración cron de esta manera:

*/5 * * * *
fduff
fuente
Quiero ejecutar el trabajo exactamente a las 8:00 a.m.EST, por lo que la expresión cron que construí es - 00 08 * * * ¿está bien?
Sangram Anand
Desafortunadamente no su trabajo, que se adjunta la captura de pantalla de la misma en el puesto, por cierto estoy probando con la hora actual EST es decir, 4:20 AM algo ..
Sangram Anand
que hora EST es la misma zona horaria en el servidor de compilación?
fduff
sí, el tiempo es el mismo, por cierto el * / 5 * * * * (cada 5mts) funciona bien.
Sangram Anand
Para ejecutar el trabajo exactamente a las 8 a.m.EST, debe hacer lo siguiente: H (0-0) 8 * * *
AKS
3

Intente usar 0 8 * * *. Deberia de funcionar

usuario1815823
fuente
2

Jenkins usa el formato Cron en la programación. Puede consultar este enlace para obtener más detalles https://en.wikipedia.org/wiki/Cron. Una cosa más, Jenkins nos proporciona una vista previa muy útil. Por favor, eche un vistazo a la captura de pantalla. ingrese la descripción de la imagen aquí

Espero esta ayuda Gracias

Thuong Vo
fuente
¿Cómo aplicar estos cambios?
Balaji Boggaram Ramanarayan
-1

Para cualquiera que no quiera esperar la hora completa para ver si se activa una compilación en particular:

Para obtener el hash, puedes descargar el hash aquí . Use el nombre completo del proyecto tal como está escrito en la página de la rama e imprímalo así:

System.out.println(Hash.from("sub/microservices/master"));
Thoredge
fuente