Sono nuovo di Jenkins. Ho un lavoro che devo programmare ogni 1 ora.
sto usando
* */1 * * *
ma non funziona in modo efficace.
Fornisci qualsiasi altra soluzione.
@hourly
o0 * * * *
Sono nuovo di Jenkins. Ho un lavoro che devo programmare ogni 1 ora.
sto usando
* */1 * * *
ma non funziona in modo efficace.
Fornisci qualsiasi altra soluzione.
@hourly
o0 * * * *
Risposte:
Jenkins usa l'espressione cron come spiegato qui
Per programmare ogni ora, quindi puoi mettere
0 * * * *
Quindi il tuo lavoro verrà eseguito ogni ora (07:00, 08:00, 09:00 e così via)
AGGIORNARE
Come spiegazione sulla configurazione originale, sintassi
* */1 * * *
eseguirà il lavoro ogni minuto.
AGGIORNAMENTO 2
Come richiesto nel commento, qui sintassi per programmarlo ogni 3 ore
0 */3 * * *
La sintassi */n
indica che i lavori verranno programmati ogni n
ora
Jenkins suggerisce in questo modo:
H * * * *
H
valori non codificati
So che questo è un vecchio thread, ma sto rispondendo perché apparentemente la gente atterra ancora qui.
La risposta migliore non dovrebbe più essere utilizzata.
Jenkins ha introdotto un valore H
.
Questo campo segue la sintassi di cron (con differenze minori). In particolare, ogni riga è composta da 5 campi separati da TAB o spazi bianchi:
DUE ORE DOM MESE DOW
- MINUTI Minuti entro l'ora (0–59)
- HOUR L'ora del giorno (0–23)
- DOM Il giorno del mese (1–31)
- MESE Il mese (1–12)
- DOW Il giorno della settimana (0–7) in cui 0 e 7 sono domenica.
Per specificare più valori per un campo, sono disponibili i seguenti operatori. Nell'ordine di precedenza,
*
specifica tutti i valori validiM-N
specifica un intervallo di valoriM-N/X
o*/X
passi da intervalli di X attraverso l'intervallo specificato o l'intero intervallo validoA,B,...,Z
enumera più valoriPer consentire alle attività programmate periodicamente di produrre un carico uniforme sul sistema, il simbolo H (per "hash") dovrebbe essere usato ove possibile. Ad esempio, l'utilizzo di 0 0 * * * per una dozzina di lavori giornalieri provocherà un forte picco a mezzanotte. Al contrario, l'utilizzo di HH * * * eseguirà comunque ogni lavoro una volta al giorno, ma non tutti contemporaneamente, utilizzando meglio risorse limitate.
Il simbolo H può essere utilizzato con un intervallo. Ad esempio, HH (0-7) * * * indica un periodo di tempo compreso tra le 12:00 (mezzanotte) e le 7:59. Puoi anche usare gli intervalli di passi con H, con o senza intervalli.
Il simbolo H può essere considerato come un valore casuale su un intervallo, ma in realtà è un hash del nome del lavoro, non una funzione casuale, in modo che il valore rimanga stabile per un determinato progetto.
Attenzione, per il campo del giorno del mese, i cicli brevi come * / 3 o H / 3 non funzioneranno in modo coerente verso la fine della maggior parte dei mesi, a causa della lunghezza variabile dei mesi. Ad esempio, * / 3 verrà eseguito il 1 °, 4 °, ... 31 ° giorno di un lungo mese, quindi di nuovo il giorno successivo del mese successivo. Gli hash vengono sempre scelti nell'intervallo 1-28, quindi H / 3 produrrà un intervallo tra le corse tra 3 e 6 giorni alla fine di un mese. (Cicli più lunghi avranno anche lunghezze incoerenti, ma l'effetto potrebbe essere relativamente meno evidente.)
Quindi la risposta corretta per costruire una volta ogni ora è
H * * * *
per ogni 3 ore
H H/3 * * *
La differenza tra *
e H
potrebbe anche essere spiegata come
*
si traduce in OGNIH
si traduce in QUALSIASIQuindi ad es
* * * * *
si traduce in: Costruisci ogni minuto, ogni ora, ogni giorno del mese, ogni mese, non importa che giorno della settimana sia.
H * * * *
si traduce in: Build una volta ogni ora (x), non importa quale minuto esatto sia (può essere qualsiasi minuto tra x: 00 e x: 59)
H H * * *
si traduce in: Build una volta al giorno, non importa che ore sono (può essere qualsiasi minuto e ogni ora tra le 00:00 e le 23:59)
Il motivo per cui dovresti preferire l'utilizzo H
invece di valori temporali hardcoded è anche spiegato come prima
Se hai 100 lavori configurati con
0 0 * * *
cercheranno tutti di iniziare contemporaneamente causando ad esempio un sacco di sondaggi e attirando il traffico a mezzanotte.
Se li hai invece tutti configurati con
H H * * *
saranno tutti costruiti una volta al giorno ma non tutti contemporaneamente, ma distribuiti nel corso della giornata.
Puoi piuttosto pianificare la schdedule meglio usando gli intervalli di tempo, ad es
H H(18-23) * * *
Tutti i lavori verranno creati ogni giorno in qualsiasi momento tra le 18:00 e le 23:59.
È anche possibile programmare lavori che attraversano la mezzanotte, ad es. Per costruire tra le 19:00 e le 5:00.
Ma poiché cron di solito non lo consente, puoi usare un trucco usando un fuso orario a turni.
Ad esempio, sto vivendo nel fuso orario MEZ, che è GMT + 1 e voglio costruire tutti i lavori tra le 19:00 e le 5:00. Per fare ciò sposto il mio fuso orario completo di 5 ore usando
TZ=Etc/GMT+6
Quindi uso un intervallo di cambio per le ore che iniziano alle 14:00 (-> +5 = 19:00 pm) e terminano alle 23:59 (-> +5 = 4:59)
H H(14-23) * * *
* */1 * * *
è corretto funziona ogni ora
Provare a utilizzare la funzione H in modo che tutti i lavori non eseguano il polling contemporaneamente a svn
H H/1 * * *
Dovrebbe fare magia. Se il completamento del processo richiede più tempo o si sta eseguendo la funzionalità di attivazione build. Aumenta il tempo o usa jenkins pluggin per interrompere la compilazione fino al completamento della build precedente.
https://wiki.jenkins-ci.org/display/JENKINS/Build+Blocker+Plugin
* * * * *
=> in esecuzione ogni minuto. Per correre tra un certo intervallo lo usi come * 1-2 * * *
<- questo passa ogni minuto tra l'1: 00 e l'
* * 1-2 * *
?
* 1-2 * * *
. La prima posizione è per Minute of our
, la seconda per hour of day
, la terza day of month
, la quarta month of year
e la quinta day of week
(in casi speciali consente anche una sesta year
). Quindi la tua linea * * 1-2 * *
traduce "Ogni minuto, ogni ora, il primo e il secondo giorno di ogni mese e ogni giorno della settimana.
*
traduce every
mentre H
traduce any
. Quindi mentre * * * * *
significa ogni minuto, H * * * *
significa costruire una volta ogni ora ma non mi interessa il minuto esatto (può essere ovunque tra 0-59 se non definito da un intervallo) e H H * * *
significa costruire una volta al giorno ma non mi interessa a che ora.
La sintassi è:
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.
Se si desidera pianificare per ogni 3 ore, la sintassi dovrebbe apparire:
* 3 * * * *