Gracias por la respuesta. Está funcionando bien. Pero mi trabajo tarda más de una hora en ejecutarse. Por ejemplo, si quiero programar este trabajo para cada 3 horas, ¿cuál sería la sintaxis?
La misma respuesta que otras respuestas a una pregunta que tiene más de 1 año.
JakeGould
Esto duplica otra respuesta y no agrega contenido nuevo. No publique una respuesta a menos que realmente tenga algo nuevo que aportar.
DavidPostill
44
La ventaja de este enfoque es que jenkins gestionará las tareas en una cola. Tal vez alguien más ya tenía la respuesta, pero aún es útil. ¿Por qué ser tan duro si es útil? la respuesta con 20 me gusta NO es tan buena ... bah
juan Isaza
Tengo que ir con @juanIsaza. Este no es un duplicado, sino una mejor respuesta. Jenkins sugiere claramente preferir el uso de Hvalores codificados en lugar de valores
rígidos
9
Sé que este es un hilo viejo pero estoy respondiendo porque aparentemente la gente todavía aterriza aquí.
Este campo sigue la sintaxis de cron (con pequeñas diferencias). Específicamente, cada línea consta de 5 campos separados por TAB o espacios en blanco:
MINUTO HORA DOM MES DOW
MINUTO Minutos dentro de la hora (0–59)
HORA La hora del día (0–23)
DOM El día del mes (1–31)
MES El mes (1–12)
DOW El día de la semana (0–7) donde 0 y 7 son domingos.
Para especificar varios valores para un campo, están disponibles los siguientes operadores. En el orden de precedencia,
* especifica todos los valores válidos
M-N especifica un rango de valores
M-N/Xo */Xpasos por intervalos de X a través del rango especificado o rango válido completo
A,B,...,Z enumera múltiples valores
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, usar 0 0 * * * para una docena de trabajos diarios causará un gran aumento a la medianoche. En contraste, usar HH * * * aún ejecutaría cada trabajo una vez al día, pero no todos al mismo tiempo, mejor usando recursos limitados.
El símbolo H se puede usar con un rango. Por ejemplo, HH (0-7) * * * significa algún tiempo entre las 12:00 a.m. (medianoche) y las 7:59 a.m. También puede usar intervalos de pasos con H, con o sin rangos.
El símbolo H 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.
Tenga en cuenta que para el campo del día del mes, los ciclos cortos como * / 3 o H / 3 no funcionarán de manera consistente cerca del final de la mayoría de los meses, debido a la duración variable de los meses. Por ejemplo, * / 3 se ejecutará los días 1, 4, ... 31 días de un mes largo, luego nuevamente el día siguiente del mes siguiente. Los hashes siempre se eligen en el rango de 1-28, por lo que H / 3 producirá una brecha entre las ejecuciones de entre 3 y 6 días al final de un mes. (Los ciclos más largos también tendrán longitudes inconsistentes, pero el efecto puede ser relativamente menos notable).
Entonces la respuesta correcta para construir una vez por hora es
H * * * *
por cada 3 horas
H H/3 * * *
La diferencia entre *y Htambién podría explicarse como
*se traduce a CADA
Hse traduce a CUALQUIERA
Entonces eg
* * * * *
se traduce en: Construir cada minuto, cada hora, todos los días del mes, todos los meses, no importa qué día de la semana sea.
H * * * *
se traduce en: Construir una vez cada hora (x), no importa qué minuto exacto sea (puede ser cualquier minuto entre x: 00 yx: 59)
H H * * *
se traduce en: Construir una vez al día, no importa qué hora sea (puede ser cualquier minuto y cualquier hora entre las 00:00 y las 23:59)
La razón por la que debería preferir usar Hvalores de tiempo en lugar de codificados también se explica como antes
Si tiene 100 trabajos configurados con
0 0 * * *
todos tratarán de comenzar al mismo tiempo causando, por ejemplo, una gran cantidad de encuestas y atraer tráfico a la medianoche.
Si los tiene en su lugar, todos configurados
H H * * *
Todos se construirán una vez al día, pero no todos al mismo tiempo, sino que se distribuirán a lo largo del día.
Rango de tiempo programado
Puede planificar mejor el calendario utilizando los rangos de tiempo, por ejemplo
H H(18-23) * * *
Todos los trabajos se construirán todos los días en cualquier momento entre las 18:00 y las 23:59.
Programar rango de tiempo cruzando la medianoche
Incluso es posible programar trabajos que cruzan la medianoche, por ejemplo, para construir entre las 19:00 p.m. y las 5:00 a.m.
Pero dado que cron generalmente no permite esto, puede usar un truco usando una zona horaria shiftet.
Por ejemplo, estoy viviendo en la zona horaria MEZ que es GMT + 1 y quiero crear todos los trabajos entre las 19:00 p.m. y las 5:00 a.m. Para hacerlo, cambio mi zona horaria completa por 5 horas usando
TZ=Etc/GMT+6
Luego uso un rango de desplazamiento para las horas que comienzan a las 14:00 (-> +5 = 19:00 pm) y terminan a las 23:59 (-> +5 = 4:59 am)
Intente usar la función H para que todo el trabajo no sondee al mismo tiempo a svn
H H/1 * * *
Debería hacer magia. Si el trabajo tarda más en finalizar o si está haciendo la funcionalidad de activación de compilación. Aumente el tiempo o use el complemento jenkins para detener la compilación hasta que finalice la compilación anterior.
El primero se ejecuta cada minuto entre la 1:00 a.m. y las 2:00 a.m., ¿verdad?
Eric Wang
@EricWang: No. Es lo mismo que * * * * *=> corriendo cada minuto. Para correr entre cierto rango, lo usa como * 1-2 * * *<- esto se ejecuta cada minuto entre la 1:00 a.m. y la 1:59 a.m.
derHugo
@derHugo ¿Quieres decir * * 1-2 * *?
Eric Wang
1
@EricWang No, quiero decir * 1-2 * * *. La primera posición es para Minute of our, la segunda para hour of day, la tercera day of month, cuarta month of yeary quinta day of week(en casos especiales también permite una sexta year). Por lo que su línea * * 1-2 * *se traduce "cada minuto, cada hora, el primer y segundo día de cada mes y cualquier día de la semana.
derHugo
1
La diferencia que perdió el autor de esta respuesta es que se *traduce a everymientras que se Htraduce a any. Entonces, mientras que * * * * *significa cada minuto, H * * * *significa construir una vez cada hora, pero no me importa el minuto exacto (puede estar entre 0-59 si no está definido por un rango) y H H * * *significa construir una vez al día, pero no me importa a qué hora.
derHugo
-5
La sintaxis es:
MINUTE Minutes within the hour (0-59)
HOUR The hour of the day (0-23)
DOM The day of the month (1-31)
MONTH The month (1-12)
DOW The day of the week (0-7) where 0 and 7 are Sunday.
Si desea programar cada 3 horas, la sintaxis debería verse:
@hourly
or0 * * * *
Respuestas:
Jenkins usa la expresión cron como se explica aquí
Para programar cada hora, entonces puedes poner
Entonces su trabajo se ejecutará cada hora (07:00, 08:00, 09:00 y así sucesivamente)
ACTUALIZAR
Como explicación sobre su configuración original, sintaxis
ejecutará el trabajo cada minuto.
ACTUALIZACIÓN 2
Como se solicitó en el comentario, aquí la sintaxis para programarlo cada 3 horas
La sintaxis
*/n
significa que los trabajos se programarán cadan
horafuente
Jenkins sugiere de esta manera:
fuente
H
valores codificados en lugar de valoresSé que este es un hilo viejo pero estoy respondiendo porque aparentemente la gente todavía aterriza aquí.
La respuesta principal ya no debería usarse.
Jenkins introdujo un valor
H
.Entonces la respuesta correcta para construir una vez por hora es
por cada 3 horas
La diferencia entre
*
yH
también podría explicarse como*
se traduce a CADAH
se traduce a CUALQUIERAEntonces eg
se traduce en: Construir cada minuto, cada hora, todos los días del mes, todos los meses, no importa qué día de la semana sea.
se traduce en: Construir una vez cada hora (x), no importa qué minuto exacto sea (puede ser cualquier minuto entre x: 00 yx: 59)
se traduce en: Construir una vez al día, no importa qué hora sea (puede ser cualquier minuto y cualquier hora entre las 00:00 y las 23:59)
La razón por la que debería preferir usar
H
valores de tiempo en lugar de codificados también se explica como antesSi tiene 100 trabajos configurados con
todos tratarán de comenzar al mismo tiempo causando, por ejemplo, una gran cantidad de encuestas y atraer tráfico a la medianoche.
Si los tiene en su lugar, todos configurados
Todos se construirán una vez al día, pero no todos al mismo tiempo, sino que se distribuirán a lo largo del día.
Rango de tiempo programado
Puede planificar mejor el calendario utilizando los rangos de tiempo, por ejemplo
Todos los trabajos se construirán todos los días en cualquier momento entre las 18:00 y las 23:59.
Programar rango de tiempo cruzando la medianoche
Incluso es posible programar trabajos que cruzan la medianoche, por ejemplo, para construir entre las 19:00 p.m. y las 5:00 a.m.
Pero dado que cron generalmente no permite esto, puede usar un truco usando una zona horaria shiftet.
Por ejemplo, estoy viviendo en la zona horaria MEZ que es GMT + 1 y quiero crear todos los trabajos entre las 19:00 p.m. y las 5:00 a.m. Para hacerlo, cambio mi zona horaria completa por 5 horas usando
Luego uso un rango de desplazamiento para las horas que comienzan a las 14:00 (-> +5 = 19:00 pm) y terminan a las 23:59 (-> +5 = 4:59 am)
fuente
es correcto, funciona cada hora
Intente usar la función H para que todo el trabajo no sondee al mismo tiempo a svn
Debería hacer magia. Si el trabajo tarda más en finalizar o si está haciendo la funcionalidad de activación de compilación. Aumente el tiempo o use el complemento jenkins para detener la compilación hasta que finalice la compilación anterior.
https://wiki.jenkins-ci.org/display/JENKINS/Build+Blocker+Plugin
fuente
* * * * *
=> corriendo cada minuto. Para correr entre cierto rango, lo usa como* 1-2 * * *
<- esto se ejecuta cada minuto entre la 1:00 a.m. y la 1:59 a.m.* * 1-2 * *
?* 1-2 * * *
. La primera posición es paraMinute of our
, la segunda parahour of day
, la terceraday of month
, cuartamonth of year
y quintaday of week
(en casos especiales también permite una sextayear
). Por lo que su línea* * 1-2 * *
se traduce "cada minuto, cada hora, el primer y segundo día de cada mes y cualquier día de la semana.*
traduce aevery
mientras que seH
traduce aany
. Entonces, mientras que* * * * *
significa cada minuto,H * * * *
significa construir una vez cada hora, pero no me importa el minuto exacto (puede estar entre 0-59 si no está definido por un rango) yH H * * *
significa construir una vez al día, pero no me importa a qué hora.La sintaxis es:
Si desea programar cada 3 horas, la sintaxis debería verse:
fuente