일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파이썬
- zip 암호화
- aggregation
- Kafka
- docker
- Test
- MySQL
- token filter test
- Python
- TensorFlow
- API
- aggs
- license delete
- springboot
- high level client
- plugin
- query
- analyzer test
- Java
- ELASTIC
- flask
- 900gle
- License
- Elasticsearch
- 차트
- zip 파일 암호화
- matplotlib
- licence delete curl
- sort
- Mac
- Today
- Total
개발잡부
[jenkins] Jenkins batch 본문
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와 같이 자주 사용하는 것들에 대해 별칭을 제공한다.