반응형
Recent Posts
Recent Comments
관리 메뉴

개발잡부

[jenkins] Jenkins batch 본문

jenkins

[jenkins] Jenkins batch

닉의네임 2022. 2. 10. 20:38
반응형

Jenkins을 Batch Scheduler로 활용하는 방법에 대해 정리해보자.

 

batch job 생성하기

build periodically를 이용하여 batch scheduler 등록

 

 

젠킨스는 빌드 스케쥴을 설정할 때 cron syntax를 따른다.

 

각 라인은 아래와 같이 5개의 필드를 탭키나 공백으로 구분해서 써주면 된다.

 

분    시    일    월    주

 

또한 한 필드에서 여러개의 값을 지정하고 싶은 경우에는 아래와 같은 오퍼레이터를 사용하면 된다.

('주'의 경우 0과 7은 일요일을 의미한다.)

 

*                          : 모든 가능한 값

M-N                     : 범위를 지정

      M-N/X 또는 */X    : X라는 간격을 지정

A,B,C,...,Z             : 여러개의 값을 열거

 

주기적으로 스케쥴되는 태스크를 지정하기 위해서는 'H' 심볼을 사용해야 한다. 랜덤한 값 정도로 생각하면 된다.

아래의 예를 보면 이해가 쉽다.

 

예를 들어 보자.

 

매시각 정각에 빌드를 하려면 아래와 같이 하면 된다.

0 * * * *

이렇게 지정하면 1시 정각, 2시 정각, ... 뭐 이런 식으로 실행이 될 것이다.

 

1시간 간격으로 빌드를 하려면 아래와 같이 하면 된다.

H * * * *

이렇게 지정하면 가령 1시 42분, 2시 42분, ... 뭐 이런 식으로 실행이 될 것이다.

 

위 두가지 방법 0 * * * *과 H * * * *의 차이점은 무엇일까?

 

0 * * * *로 스케쥴을 지정한 Job이 많은 경우, 모든 작업이 정확히 정각에 빌드를 실행하므로 순간적으로 빌드 장비의 리소스 사용이 급격히 늘어난다. 하지만 H * * * *로 지정한 경우에는 1시간 간격으로 실행한다라고만 지정했으므로 젠킨스가 내부적으로 빌드 시간을 결정해서 빌드를 하므로 부하가 골고루 분산되는 효과를 얻을 수 있다.  그러므로 주기적으로 실행하는 빌드가 있다면 0 * * * * 처럼 시간을 직접 지정한 방식 보다는 H * * * *가 제한된 리소스를 가진 빌드 환경에서 보다 효과적이다.

 

 

좀더 예를 들면...

 

 

하루 간격으로 빌드를 하려면 아래와 같이 하면 된다.

H H * * *

 

20분 간격으로 빌드를 하려면 아래와 같이 하면 된다.

H/20 * * * *

이렇게 설정하면 예를 들어 7시3분, 7시23분, 7시43분 뭐 이린 식으로 실행이 될 것이다. 

 

일요일밤 밤 11시에 빌드하고자 한다면 아래와 같이 하면 된다.

00 23 * * 0

 

매 시간 전반 30분에 10분 간격으로 빌드를 하려면 아래와 같이 하면 된다.

H(0-29)/10 * * * *

즉, 범위와 간격을 모두 지정하면 된다.

 

월요일부터 금요일까지 오전 9시부터 오후 4시까지 2시간 간격으로 빌드를 하려면 아래와 같이 하면 된다.

H 9-16/2 * * 1-5

1-5는 월요일부터 금요일임.

 

1월부터 11월까지 각 월의 1일과 15일에 하루 한번 빌드를 하려면 아래와 같이 하면 된다.

H H 1,15 1-11 *

 

또한 @yearly, @annually, @monthly, @weekly, @dailiy, @midnight, 그리고 @hourly와 같이 자주 사용하는 것들에 대해 별칭을 제공한다.



반응형
Comments