Sangil's blog

https://github.com/ChoiSangIl Admin

pm2 jenkins 배포 오류 DEV / WEB

2021-05-26 posted by sang12


기존 리눅스 서버에 express 서버를 1개 사용하고 있었는데 추가로 1개 더 셋팅하려고 하다가 발생한 문제
Jenkins를 이용해서 배포하고있었는데, 기존에 쉘 명령어는 아래와 같았다.  

pm2 kill
pm2 start

ㅎㅎ 뭔가 느껴지지 않는가... 
기존에 새로 추가한것도 동일하게 셋팅하니 pm2 kill을 호출하면서 pm2로 올라가있는 전체 프로세스를 죽이는 것..
하나를 배포하면 한놈은 죽고 다른놈만 올라가는 상황 발생.

그래서 생각한 방법이 --name을 줘서 해당되는놈만 삭제하고 올리자 라고 해서 부랴부랴 start할때 --name옵션을 넣어줬다.
잘되는가 싶더니.....
pm2 stop target을 할때 target이 존재하지 않으면 젠킨스에서 오류를 뿜어낸다... 
스크립트로 만들어야 되나라는 생각이 스쳐지나갈쯤... 구원투수 등판 (
https://github.com/Unitech/pm2/issues/325)
젠킨스에서 오류가 날때 오류코드를 리턴 안하게 하면된다.

-해결방법

pm2 stop -s app || :
pm2 delete -s app || :
set DEBUG=express:* & pm2 start ./bin/www --name app

-s 옵션만 넣으면 리눅스에서 오류는 나오지 않으나 젠킨스에서 동일한 오류가 발생한다. || :을 넣어주면 실행후 null을 리턴해줘서 젠킨스에서 오류라고 생각하지 않는듯하다..!

REPLY