스프링
windows에서 SpringBoot / Jenkins 배포 - 기존 프로세스 죽이기
w_bau
2022. 12. 21. 12:59
회사에서 사용하는 웹 서버의 운영체제가 windows 인데 jenkins의 스크립트를 작성하며 애를 먹었다.
일단 가장 큰 문제는 기존에 실행중인 프로세스를 kill 하는 부분이었다.
1. 내장 톰캣을 사용하기 때문에 프로세스 이름이 다른 자바 프로그램과 같아지기 때문에 프로세스 이름으로는 프로세스를 죽일 수 없었다.
2. PowerShell을 사용하여 포트번호를 검색해서 킬 하는 스크립트를 작성했으나 jenkins가 처음이었기 때문에 excute shell 로는 윈도우즈 PowerShell을 실행할 수 없었다.
해결한 방법은 PowerShell 플러그인을 설치하여 아래와 같은 스크립트로 특정 포트를 가진 프로세스를 찾아서 종료시켰다.
Get-Process -Id (Get-NetTCPConnection -LocalPort $($env:ServerPortNum)).OwningProcess | Stop-Process -Force