반응형
SpringBatch로 작성한 배치 어플리케이션을 주기적으로 실행시키기 위한 스케줄러로 Jenkins를 활용하는 방법을 알아본다. 다른 대안들도 많이 있지만 Jenkins 활용 시 오픈소스 무료로 GUI 기반 대시보드, 이력관리, 권한관리 등이 가능하다는 장점이 있다.
배치 스케줄러 JOB을 생성한다
생성한 JOB에서 좌측 "구성"을 클릭하고 설정을 시작한다.
스케줄러를 설정하는 것임으로 '소스코드 관리'는 None으로 선택하고, 하단에 빌드 유발에 crontab 표현식으로 설정을 한다. 아래 예시는 "월~금요일, 매일 1시, 05~30분 사이 실행"을 의미한다. 분까지 직접 설정하는 방식이 아닌 H 심볼을 사용하여 Jenkins가 내부적으로 범위 내(ex. 05~30분)에서 분을 결정하도록 하면 부하 분산 효과를 볼 수 있다.
다음으로 배치를 실행하는 쉘을 Build Steps의 Execute shell에 작성해준다.
java -jar /test/spring-batch.jar --spring.batch.job.name=myjob
배치 실행을 위한 공통 쉘스크립트를 원격 서버에 두고 활용한다면 아래와 같이 할 수 있다.
ssh xxxx@x.x.x.x "/home/test/runbatch.sh myjob"
서버의 runbatch.sh 파일은 아래와 같이 작성할 수 있다.
#!/bin/bash
echo "batch running"
# job name
JOB_NAME=$1
# job 파라메타
PARAM=$2
if [[ -z ${PARAM} ]]; then
java -jar /test/spring-batch.jar --spring.batch.job.name=${JOB_NAME}
else
java -jar /test/spring-batch.jar --spring.batch.job.name=${JOB_NAME} ${PARAM}
fi
echo "batch completed"
참고:
https://cloud-oky.tistory.com/253
반응형
'개발 > 기타' 카테고리의 다른 글
[Google OAuth2] The given origin is not allowed for the given client ID 에러 해결 (0) | 2024.03.15 |
---|---|
GitHub Actions를 활용한 AWS S3 CICD 구성(React 어플리케이션) (1) | 2023.11.19 |
random secret key 생성(openssl rand) (0) | 2023.09.23 |
NodeJS mongoose DB 커넥션 오류 - SyntaxError: Invalid or unexpected token (0) | 2023.09.17 |
MongoDB mongo: command not found (0) | 2023.09.16 |
댓글