지금까진 그냥 깃허브에 푸시하면 젠킨스가 자동으로 작동하도록 하는 과정을 구성했다 이제 실제로 깃허브에서 코드를 pull하고 자동으로 변경된 소스코드로 서버가 작동하도록 만들어 보자
Node.js 기반 서버를 배포하는 방식에는 여러가지가 있지만 이 포스팅에선 가장 널리쓰이는 툴 중 하나인 PM2를 이용할 것이다.
PM2를 설치하는 방법은 간단하다. 아래의 스크립트를 터미널에 입력하면 끝이다.
npm install -g pm2 # 둘 중 자신이 쓰는 패키지 관리자에 맞는 것을 쓰면 된다.
sudo yarn global add pm2
다 설치되면 터미널의 아래 명령어를 입력해보자
pm2 -v
이런 식으로 pm2의 로고와 함께 버전이 뜨면 설치가 완료된 것이다
먼저 자동배포를 구성하기에 앞서 젠킨스에 의해 실행될 스크립트를 먼저 작성해놓자
이 스크립트 파일은 깃허브에서 클론한 리포지토리 폴더 내부에 작성해주자. vim 등 텍스트 편집기를 이용해서 작성하면 된다
#!/bin/bash
git pull
sudo yarn or npm install # yarn이나 npm 둘 다 하나만
pm2 restart main
다 작성했다면 update.sh라는 이름으로 저장해주고 아래의 명령어를 통해 실행할 수 있는 명령으로 바꿔주자
chmod 755 update.sh
터미널에서 update.sh가 문제없이 실행된다면 다음 단계로 넘어가자
아래의 스크립트 파일은 젠킨스의 구성에서 쉘 스크립트를 작성했던 부분에 작성해주자
#!/bin/sh
ssh -tt 배포서버의 사용자명@배포서버의 주소 <<EOF
cd [리포지토리 폴더]
./update.sh
exit
EOF
젠킨스의 구성에서 해당 스크립트를 작성해주어야 한다는 것에 주의
우리가 만드는 자동배포 프로세스는 젠킨스 서버에서 배포서버에 접속하여 업데이트를 실행하게 만드는 방식이다. 그러므로 젠킨스를 가동중인 서버의 ssh를 설정해야 한다
그러니 젠킨스를 가동 중인 서버에 접속해서 아래의 명령어를 입력하고 jenkins로 사용자를 변경하자
sudo su jenkins
cd
ls
아래와 같이 나오면 성공이다
여기서 ssh 설정을 위해 .ssh 폴더로 이동한 다음 아래의 명령어를 입력해 ssh 키를 생성하자
ssh-keygen -t rsa
이번에도 pub파일로 나온 값을 복사해주어야 한다. 아래의 명령어를 터미널에 입력하고
cat id_rsa.pub
해당 명령어를 쳐서 나온 값을 복사해주자.
단 이번에는 비밀번호를 입력하지 말고 그냥 넘어가자
나온 값을 복사해줬다면 젠킨스를 가동중인 서버에서 로그아웃해도 된다.
이제 배포용 프로그램이 돌아가는 서버에 접속해서 ssh 설정을 위해 .ssh 폴더로 이동해주자
cd ~/.ssh
이 폴더 내부에는 authorized_keys라는 파일이 있을 수도 없을 수도 있는데 없어도 상관 없다 아래의 명령어를 터미널에 입력하고 vim을 열자
vim authorized_keys
i
키를 눌러 입력모드로 들어간 다음 복사해온 pub 파일의 값을 붙여넣고 :qw
를 입력해서 저장 후 종료를 한다.
그런 다음 다시 젠킨스를 설치한 서버로 돌아가서 ssh를 통해 배포서버로 접속해보자. 접속할 수 있다면 성공이다.
그럼 이제 pm2에 미리 Node.js 서버파일을 실행시켜 놓자
pm2 start [메인 진입점이 되는 js파일] # 일반 실행
pm2 start [메인 진입점이 되는 js파일] -i 0 # 클러스터 모드 실행
젠킨스를 통해 빌드 테스트를 하기 전 아래 명령어를 터미널에 입력해 우리가 작성한 update.sh가 제대로 작동하는지 확인해보자
./update.sh
여기까지도 문제없이 작동한다면 구성한 젠킨스 작업에 가서 buildnow를 눌러 테스트 빌드를 해보자
마지막으로 연동된 리포지토리에 소스코드를 push를 해보고 문제없이 작동하는지 확인하자
문제없이 작동한다면 축하한다 당신은 자동배포 서버를 구축하는데 성공하였다.