Precisa agendar um trabalho a cada hora em Jenkins

15

Eu sou novo no Jenkins. Eu tenho um trabalho que eu preciso agendar a cada 1 hora.

estou usando

* */1 * * * 

mas não está funcionando de forma eficaz.

Por favor, forneça qualquer outra solução.

Ajay
fonte
3
você deve explicar o que "mas não está funcionando efetivamente". significa. E adicione sua distro & amp; entradas cronttab
Sathyajith Bhat
usar @hourly ou 0 * * * *
Renju Chandran chingath
Obrigado. Por favor, mencione a sintaxe, se eu quiser agendar a cada 3 horas.
Ajay
Uso: H / 60 * * * *
Eyal Sooliman

Respostas:

29

Jenkins usa a expressão cron como explicado Aqui

Para agendar a cada hora, você pode colocar

0 * * * *

Então seu trabalho será executado a cada hora (07:00, 08:00, 09:00 e assim por diante)

ATUALIZAR

Como explicação sobre sua configuração original, sintaxe

* */1 * * *

irá executar o trabalho a cada minuto.

ATUALIZAÇÃO 2

Conforme solicitado no comentário, aqui sintaxe para agendar a cada 3 horas

0 */3 * * *

A sintaxe */n significa que os trabalhos serão programados a cada n horas

masegaloeh
fonte
Obrigado pela resposta. Está funcionando bem. Mas meu trabalho está levando mais de uma hora para ser executado. Por exemplo, se eu quiser agendar esse trabalho a cada 3 horas, qual seria o compartilhamento syntax.please.
Ajay
Confira minha resposta atualizada :)
masegaloeh
@Ajay Se esta resposta funcionar para o seu problema, por favor considere aceite esta resposta :)
masegaloeh
12

Jenkins sugere isso:

H * * * *
Ruby232
fonte
2
Mesma resposta que outras respostas a uma pergunta com mais de 1 ano de idade.
JakeGould
Isso duplica outra resposta e não adiciona nenhum novo conteúdo. Por favor, não poste uma resposta a menos que você tenha algo novo para contribuir.
DavidPostill
4
A vantagem dessa abordagem é que os jenkins gerenciam as tarefas em uma fila. Talvez alguém já tenha a resposta, mas ainda é útil. Por que ser tão duro se é útil? a resposta com 20 gostos não é tão boa .... bah
juan Isaza
Eu tenho que ir com @juanIsaza. Esta não é uma duplicata, mas na verdade é uma resposta melhor. Jenkins sugere claramente preferir o uso de H em vez de valores codificados
derHugo
7

Eu sei que este é um tópico antigo, mas estou respondendo porque aparentemente as pessoas ainda estão aqui.

A resposta de topo não deve ser mais usado.

Jenkins introduziu um valor H.

Este campo segue a sintaxe do cron (com pequenas diferenças).   Especificamente, cada linha consiste em 5 campos separados por TAB ou   espaço em branco:

HORA DE MINUTOS DOM MÊS DOW

  • MINUTO Minutos dentro da hora (0–59)
  • HORA A hora do dia (0–23)
  • DOM O dia do mês (1–31)
  • MÊS O mês (1 a 12)
  • DOW O dia da semana (0–7) onde 0 e 7 são domingo.

Para especificar vários valores para um campo, os seguintes operadores são   acessível. Na ordem de precedência,

  • * especifica todos os valores válidos
  • M-N especifica um intervalo de valores
  • M-N/X ou */X etapas por intervalos de X até o intervalo especificado ou todo o intervalo válido
  • A,B,...,Z enumera vários valores

Para permitir que tarefas periodicamente agendadas produzam carga   sistema, o símbolo H (para "hash") deve ser usado sempre que possível.   Por exemplo, usar 0 0 * * * para uma dúzia de trabalhos diários causará um grande   pico à meia-noite. Em contraste, usando H H * * * ainda seria executado   cada trabalho uma vez por dia, mas não todos ao mesmo tempo, usando melhor   recursos limitados.

O símbolo H pode ser usado com um intervalo. Por exemplo, H H (0-7) * * *   significa algum tempo entre as 00:00 (meia-noite) e as 7:59 AM. Você também pode   use intervalos de passos com H, com ou sem intervalos.

O símbolo H pode ser considerado como um valor aleatório em um intervalo, mas   na verdade é um hash do nome do trabalho, não uma função aleatória, para que o   O valor permanece estável para qualquer projeto.

Tenha em atenção que, para o campo do dia do mês, ciclos curtos como * / 3 ou   H / 3 não funcionará consistentemente perto do final da maioria dos meses, devido a   comprimentos mensais variáveis. Por exemplo, * / 3 será executado no 1º, 4º   … 31 dias de um mês longo, depois novamente no dia seguinte do mês seguinte.   Hashes são sempre escolhidos na faixa de 1-28, então H / 3 irá produzir uma lacuna   entre execuções entre 3 e 6 dias no final de um mês. (Mais longo   ciclos também terão comprimentos inconsistentes, mas o efeito pode ser   relativamente menos perceptível.)

Então a resposta correta para construir uma vez por hora é

H * * * *

para cada 3 horas

H H/3 * * *

A diferença entre * e H poderia ser também explicado como

  • * traduz para CADA
  • H traduz para QUALQUER

Então, por exemplo,

* * * * *

Traduz para: Construir cada minuto, toda hora, todo dia do mês, todo mês, não importa qual dia da semana é.

H * * * *

traduz a: Construir uma vez a cada hora (x), não importa o minuto exato (pode ser qualquer minuto entre x: 00 e x: 59)

H H * * *

traduz a: Construir uma vez todos os dias, não importa que horas são (pode ser qualquer minuto e qualquer hora entre as 00:00 e as 23:59)


A razão pela qual você deve preferir usar H em vez de valores de tempo codificados é também explicado como antes

Se você tiver 100 trabalhos configurados com

0 0 * * *

todos tentarão começar ao mesmo tempo, causando, por exemplo, muita pesquisa e puxando o tráfego à meia-noite.

Se você os tiver, todos configurados com

H H * * *

todos eles serão construídos uma vez por dia, mas nem todos ao mesmo tempo, mas distribuídos ao longo do dia.


Programar intervalo de tempo

Você pode planejar melhor o cronograma usando os intervalos de tempo.

H H(18-23) * * *

Todos os trabalhos serão construídos todos os dias a qualquer hora entre as 18:00 e as 23:59.


Programar intervalo de tempo cruzando a meia-noite

É também possível agendar trabalhos que atravessam a meia-noite, e. construir entre as 19:00 e as 5:00 da manhã.

Mas desde cron geralmente não permite isso, você pode usar um truque usando um fuso horário shifter.

Por exemplo. Estou vivendo no fuso horário MEZ que é GMT + 1 e quero construir todos os trabalhos entre 19:00 e 5:00 da manhã. Para isso, mudo o fuso horário completo em 5 horas usando

TZ=Etc/GMT+6

Do que eu uso um intervalo de turnos para as horas começando às 14:00 (- & gt; +5 = 19:00 pm) e terminando às 23:59 (- & gt; +5 = 4:59 am)

H H(14-23) * * *
derHugo
fonte
-1
* */1 * * *

está correto ele é executado a cada hora

Tente usar a função H para que todo o trabalho não faça polling ao mesmo tempo para o svn

H H/1 * * *

Deve fazer mágica. Se o trabalho levar mais tempo para ser concluído ou se você estiver executando a funcionalidade de acionador de compilação. Aumente o tempo ou use plugins do jenkins para parar a compilação até que a compilação anterior seja concluída.

https://wiki.jenkins-ci.org/display/JENKINS/Build+Blocker+Plugin

jin T
fonte
O primeiro é executado a cada minuto entre 1h e 2h, certo?
Eric Wang
@ ErricWang: Não. É o mesmo que * * * * * = & gt; correndo a cada minuto. Para correr entre um determinado intervalo, use-o como * 1-2 * * * & lt; - isso ocorre a cada minuto entre 1h e 1h59
derHugo
@derHugo Você quer dizer * * 1-2 * * ?
Eric Wang
1
@EricWang Não, eu quero dizer * 1-2 * * *. A primeira posição é para Minute of our, o segundo para hour of day, o terceiro day of monthquarto month of year e quinto day of week (em casos especiais também permite um sexto year ). Então sua linha * * 1-2 * * traduz cada minuto, cada hora, o primeiro e segundo dia de cada mês e qualquer dia da semana.
derHugo
1
A diferença que o autor desta resposta perdeu é que * traduz para every enquanto H traduz para any. Por enquanto * * * * * significa cada minuto H * * * * significa construir uma vez a cada hora, mas eu não me importo com o minuto exato (pode estar em qualquer lugar entre 0-59, se não definido por um intervalo) e H H * * * significa construir uma vez por dia, mas eu não me importo com a hora.
derHugo
-5

A sintaxe é:


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 você quiser agendar a cada 3 horas, a sintaxe deve procurar:

* 3 * * * *
narasimha Rao
fonte
4
Isto irá agendar para 3 AM todos os dias, e não a cada 3 horas
lony