QueryDSL 도입 후,
nohup + & 으로 jar파일 실행하니 계속해서 오류가 발생했다.
build과정에서 문제가 있었나 확인을 위해
jenkins가 build한 jar파일을 그대로 서버 쉘 환경에서 실행했다.
잘 동작한다.
그렇다면 배포 스크립트가 잘못되었구나!
이전 post build script는 다음과 같다.
nohup java -jar /var/lib/jenkins/workspace/AISM_PRO_SPRING_BOOT/build/libs/aismpro-0.0.1-SNAPSHOT.jar &
그냥 jar파일 찾아서 백그라운드에서 실행한다.
확인해 보니 nohup은 이전 실행 pid를 계속 잡고 있더라..
여기서 문제가 생긴 것으로 판단하여 이전에 배포된 jar파일이 실행중이라면 (=pid가 있다면),
kill하고 새로운 pid를 할당하도록 post build script를 수정했다.
PROC=ps aux | grep aismpro
if [[ $PROC == "aismpro" ]];then echo "process is running.."; sudo kill -15 ps -ef | grep aismpro| grep -v grep | awk '{print $2}'
; else echo "process is not running.."; fi
nohup java -jar /var/lib/jenkins/workspace/AISM_PRO_SPRING_BOOT/build/libs/aismpro-0.0.1-SNAPSHOT.jar &
이렇게 수정했으나,
역시 호락호락하지 않다.
혹시 스크립트 문법에 문제가 있나 의심스러워서
서버 쉘 환경에서 동일한 명령어로 실행해 보았다.
잘된다.
그럼 jenkins post build script 실행과 서버 스크립스 실행과 싱크(..?문법)에 차이(변형)이 발생한다고 합리적으로 의심할 수 있다.
그래서 이걸 찾으려니 귀찮아져서
그냥 sh 파일 만들어서 그 자체를 서버에서 실행하도록 post build script를 수정했다.
아주 잘된다.
어렵다 jenkins..