Jenkins에서 작업을 예약하려면 어떻게합니까?


284

Jenkins에 새 작업을 추가했는데 정기적으로 예약하고 싶습니다.

에서 구성 작업 , 나는 "빌드 정기적으로"확인란을 선택하고과에서 일정 텍스트 필드 식을 추가 :

15 13 * * *

그러나 예정된 시간에는 실행되지 않습니다.

작업을 예약하는 올바른 절차입니까?

여기에 이미지 설명을 입력하십시오

작업은 오전 4시 20 분에 실행되어야하지만 실행되고 있지 않습니다.


실행되거나 실행되지 않습니까? 내가 정확하게 기억한다면 당신의 크론은 "매일 13:15에"라고 말합니다. 그리고 예 : 나는 이것을 주기적 빌드를 예약하는 올바른 방법이라고 생각합니다.
Fildor

1
아마도 이것이 도움이 될 것입니다 : en.wikipedia.org/wiki/Cron#CRON_expression-Cedric이 이미 연결되어있는 것을 보았습니다 ... 어쩌면 예정된 기간이 무엇입니까?
Fildor

1
참고로, RHS의 파란색 물음표 가능한 값의 좋은 설명 계시
devstopfix

다음은 자동 생성을위한 좋은 웹 페이지입니다.-> crontab-generator.org
Fabián Carrasco

답변:


506

스케줄 기간을 설정하면 15 13 * * *Jenkins에게 매년 13 시간의 15 분에 매년 매달 빌드를 스케줄하도록 지시합니다.

Jenkins는 cron 표현식을 사용 했으며 다른 필드는 다음과 같습니다.

  1. MINUTES 1 시간 후의 분 (0-59)
  2. 하루의 시간 (0-23)
  3. DAYMONTH 한 달의 일 (1-31)
  4. 년 1 월의 월 (1-12)
  5. DAYWEEK 0과 7이 일요일 인 요일 (0-7)

5 분마다 빌드를 예약하려면 다음 작업을 수행하십시오. */5 * * * *

매일 8h00에 빌드를 예약하려면 다음과 같이하십시오. 0 8 * * *

지난 몇 가지 버전 (2014)의 경우 Jenkins에는 새로운 매개 변수가 있습니다 H( Jenkins 코드 설명서 에서 추출 ).

주기적으로 예약 된 작업이 시스템에 균일 한로드를 생성 할 수있게하려면 가능하면 기호 H( "해시")를 사용해야합니다.

예를 들어, 0 0 * * *매일 12 개의 작업을 사용하면 자정에 큰 스파이크가 발생합니다. 반면,를 사용 H H * * *하면 하루에 한 번 각 작업을 실행할 수 있지만 동시에 모든 작업을 수행 할 수는 없으므로 제한된 리소스를 사용하는 것이 좋습니다.

또한 다음을 참고하십시오.

H기호는 범위에서 임의의 값으로 생각 될 수 있지만, 실제로 값이 특정 프로젝트에 대해 안정적으로 유지 그래서, 작업 이름이 아닌 임의의 기능의 해시입니다.

'H'사용의 더 많은 예


5
6 시간마다 주기적으로 구축하는 방법. 합니까 * */6 * * *작동?
ѕтƒ

1
@ ѕтƒ : 예, 6 시간마다 빌드를 시작합니다
Cédric Julien 10

31
'* / 5 * * * *'대신 'H / 5 * * * *'를 사용하여로드를 균등하게 분산
friederbluemle

1
H의 범위를 제한하려면 H (1-3)을 사용하여 예를 들어 1과 3 사이의 숫자를 선택할 수 있습니다. 예를 들어 HH (1-3) * * *는 1am과 3am 사이에 한 번 실행됩니다
AndyClaw

16
실망스럽게도 내 두뇌에는 문서를 끊임없이 다시 참조하지 않고도 이러한 표현을 파악할 수없는 무언가가있는 것 같습니다.
스킬 M2

34

Jenkins를 사용하면 줄 바꿈으로 구분하여 여러 번 설정할 수 있습니다.

매일 오전 7시에 매일 오전 7시에 건축 해야하는 경우 아래가 잘 작동합니다.

H 7 * * *

H 16 * * 0

1
H (0-0) 6 * * 1 (월요일 오전 6시 (ET)에 실행), H (0-0) 16 * * 0 (일요일 오후 4시 (ET)) 평원 H 16 (1600 / 4pm에서 실행되지 않음)을 실행하려면 H (0-0) 16 ...을 사용해야합니다.
AKS

2
@ArunSangal 대신 H(0-0)간단하게 사용할 0수 있다는 장점은 H모든 작업이 동시에 동시에 실행되는 것이 아니라 "다음 사용 가능한 시간 슬롯"을 얻으려고한다는 것입니다.
derHugo


26

형식은 다음과 같습니다.

MINUTE (0-59), HOUR (0-23), DAY (1-31), MONTH (1-12), 요일 (0-6)

값 대신 Hash 단어를 나타내는 문자 H를 삽입 할 수 있습니다. 프로젝트 이름의 해시 코드를 기반으로 매개 변수를 계산합니다.

따라서 빌드 머신에서 동시에 여러 프로젝트를 빌드하는 경우 매일 자정이라고 가정하여 빌드 실행을 동시에 시작하지는 않습니다. 각 프로젝트는 해시 코드에 따라 다른 순간에 실행을 시작합니다.

숫자 사이에 값을 지정할 수도 있습니다. 즉 H (0,30)은 가능한 해시가 0-30 인 프로젝트의 해시 코드를 반환합니다.

예 :

  1. 월요일-금요일 오전 08:30에 매일 빌드를 시작하십시오. 30 08 * * 1-5

  2. 평일 매일 빌드 점심 시간 12:00와 자정 00:00, 일요일부터 목요일까지 : 00 0,12 * * 0-4

  3. 프로젝트 해시에 따라 오후 4시-오후 4시 59 분 또는 오후 4시-16:59 사이 늦은 오후에 매일 빌드 시작 : H 16 * * 1-5

  4. 자정에 빌드 시작 : @midnight 또는 매주 토요일 자정에 빌드 시작 : 59 23 * * 6

  5. 매월 1 일 오전 2시 ~ 오후 2시 30 분 사이 : H (0,30) 02 01 * *


1
좋은 설명입니다.
vivek

10

Jenkins의 스케줄 작업 단계 :

  1. 작업 요구 사항의 "구성" 을 클릭하십시오
  2. 아래로 스크롤하여 " 빌드 트리거 "-자막
  3. 주기적으로 빌드 의 확인란을 클릭하십시오
  4. 예를 들어, 스케줄 필드에 시간 스케줄을 추가하십시오. @midnight

여기에 이미지 설명을 입력하십시오

참고 : 일정 필드 아래에서 마지막 및 다음 날짜-시간 실행을 볼 수 있습니다.

Jenkins는 또한 사전 예약 된 별칭을 지원하여 빌드를 예약합니다.

@hourly, @daily, @weekly, @monthly,@midnight

@hourly -> 시간 시작시 매시간마다 빌드-> 0 * * * *

@daily, @midnight -> 매일 자정에 빌드-> 0 0 * * *

@weekly -> 매주 일요일 오전 자정에 빌드-> 0 0 * * 0

@monthly -> 매월 첫째 날 자정에 매월 빌드-> 0 0 1 * *


자정은 꽤 멋지다 :) Jenkins는 @ daily를 포함하여 @을 시작하는 꽤 특별한 값을 인식하는 것 같습니다. 최종 목록에 대한 링크를 게시 할 수 있습니까?
chrisinmtown 19

@ chrisinmtown, 사전 정의 된 별칭 목록이 추가 되었으면 좋겠다. :)
Gavriel Cohen

7

5 분마다 크론 작업을 예약하려면 다음과 같이 크론 설정을 정의해야합니다.

*/5 * * * *

정확히 오전 8시 EST에 작업을 실행하고 싶습니다. 그래서 내가 만든 cron 표현식은-00 08 * * * 괜찮습니다.
Sangram Anand

불행하게도 그 작동하지, 그것의 스크린 샷 게시물에 첨부 된 BTW, 현재 EST 시간, 즉 그것을 테스트하고, 오전 4시 20분 뭔가 ..
Sangram 아난드

EST 시간이 빌드 서버에서 동일한 시간대입니까?
fduff

예, 시간이 동일합니다. * / 5 * * * * (모든 5mts)에서 잘 작동합니다.
Sangram Anand

오전 8시 (EST)에 정확하게 작업을 실행하려면 다음과 같이해야합니다. H (0-0) 8 * * *
AKS


2

Jenkins는 예약시 Cron 형식을 사용합니다. 자세한 내용은이 링크를 참조하십시오 .https : //en.wikipedia.org/wiki/Cron. Jenkins는 우리에게 매우 유용한 미리보기를 제공합니다. 스크린 샷을 살펴보십시오. 여기에 이미지 설명을 입력하십시오

도움이 되었기를 바랍니다. 감사


이러한 변경 사항을 적용하는 방법?
Balaji Boggaram Ramanarayan


-1

전체 빌드를 기다리지 않고 특정 빌드가 트리거되는지 확인하려는 사람은 다음을 수행하십시오.

해시를 얻으려면 여기에서 해시를 다운로드 할 수 있습니다 . 분기 페이지에 입력 된 전체 프로젝트 이름을 사용하여 다음과 같이 인쇄하십시오.

System.out.println(Hash.from("sub/microservices/master"));
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.