본문 바로가기
DevOps

Jenkins - Build Periodically 옵션을 이용한 스케줄러 사용 방법

by devLog by Ronnie's 2022. 5. 15.

들어가며


젠킨스에서도 스케줄러 기능을 제공하는데 이때 시간 설정 방법이 젠킨스에서는 차이가 있는 부분과 사용 방법에 대해서 정리한다.

 

 

사용 방법


1. 먼저 New Item을 통해 프로젝트를 생성 후 구성에 들어가준다.

 

2.구성에 들어가 중하단에 보면 빌드 유발에 Build Periodically라는 옵션을 체크해주면 다음과 같이 스케줄러가 나온다.

 

3. 설명을 보면 기존 스케줄러에서 시간 입력시 사용되면 cron 과 유사한 기능을 제공한다고 설명을 하고 있다.

 

4. 시간 설정하기 - 설명

 

- cron syntax에 맞춰서 시간을 설정해준다.

- 분 시 일 월 주 -> 총 5개의 필드를 탭키나 공백으로 구분해서 사용한다.

- 값을 입력하는 방법은 다음과 같다.

  • *                            : 모든 가능한 값
  • M-N                      : 범위를 지정
  • M-N/X 또는 */X    : X라는 간격을 지정
  • A,B,C,...,Z             : 여러개의 값을 열거

5. 시간 설정하기 - 예시

 

1) 매시각 정각에 빌드 - 0 * * * * *

2) 20분 간격으로 빌드 - H/20 * * * *

3) 일요일 밤 11시에 빌드 - 00 23 * * 0

4) 매 시간 전반 30분에 10분 간격으로 빌드 - H(0-29)/10 * * * *

- 해당 예시들을 응용해서 자신이 원하는 시간 설정을 한다.

 

0 * * * * 과 H * * * * 방식의 차이점


위의 예시에서도 볼 수 있듯이 H로 사용하는 시간 설정 방법이 있는데 H를 시간으로 착각하는 경우가 있는데 이것은 시간을 가리키는 것이 아닌 젠킨스에서 스케줄러 시간 설정을 할때 부하를 줄이기 위한 방법으로 사용된다.

 

 젠킨스 스케줄러 설정을 H를 빼고 0 * * * * 다음과 같이 설정을 하면 아래와 같이 안내문이 나온다.

 

해당 내용과 같이 분산을 고려하여 0 * * * * 보다는 H * * * *을 사용하라고 나온다. 그래서 바꿔주면 다음과 같이 안내문이 사라진다.

 

이것의 이유는 만약 0 * * * *로 설정한 Job이 많은 경우의 모든 작업이 정확히 정각에 빌드를 실행하므로 순간적으로 빌드 장비의 리소스 사용이 급격히 높아져서 부하가 올 수 있기 때문에 젠킨스에서는 H * * * * 방식을 사용하여 젠킨스가 내부적으로 빌드 시간을 결정해서 빌드를 하므로 이러한 부하가 높아지는 경우를 분산시켜 준다.  Job 을 여러개 만들어서 스케줄러에 H 방식을 사용한 시간 설정을 이용하면 각각 다른 시간으로 설정되는 것을 확인할 수 있다.

 

 

** 추가


추가적으로 H/2 * * * * 이런식으로 설정을 하게 되면 /2의 의미는 2분 간격으로 실행하게 된다. 

댓글