본문 바로가기
개발/기타

Jenkins를 활용한 SpringBatch 스케줄러 구성

by 궁즉변 변즉통 통즉구 2023. 10. 18.
반응형

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

 

반응형

댓글