'EC2에 git 연동하기'와 '최신 버전으로 재배포하기'를 해보자
- 속해 있는 브랜치의 최신 상태로 업데이트한다.
- 그 상태에서 해당 서비스만 재시작한다. (
pmw reload 서비스명)- 깃허브의 상태를 가져오려 할 때마다 깃허브 로그인을 해야 하므로 깃허브와 EC2를 연동해준다.
(현재 모든 서비스를 ecosystem.config.js를 이용해 pm2 start 시켜 실행시키고 있는 상태에서 진행한다.)
우선 결과적으로 EC2에 접근한 후 아래의 명령어를 차례로 실시하면 된다.
cd services/{ 서비스 명 }
git checkout .
git fetch
git checkout { 브랜치 명 }
npm ci --omit=dev
pm2 reload { 서비스 명 }
하나씩 설명하겠다.
cd services/{ 서비스 명 } : 재배포를 하고자하는 서비스의 레포지토리 위치로 이동한다.git checkout . : 현재 작업 중인 디렉토리의 모든 변경 사항을 취소하고, 마지막 커밋 상태로 되돌린다.git fetch : 원격 저장소에서 최신 커밋 정보를 가져온다. 정보를 가져오기만 하고 pull처럼 로컬 저장소에 머지를 하진 않는다.git checkout { 브랜치 명 } : {브랜치 명}에 해당하는 브랜치로 전환한다. 이 명령어를 통해 선택한 브랜치의 최신 코드로 작업 환경을 변경한다.npm ci --omit=dev : npm ci는 package-lock.json 파일에 정의된 의존성을 설치하는 명령어인데 --omit=dev은 개발 의존성은 무시하라는 얘기이다. (필수X)pm2 reload { 서비스 명 } : 재배포하고자하는 서비스만 reload를 진행한다.위의 과정을 거쳐 원격 저장소의 최신 버전으로 재배포를 진행할 수 있다.
EC2에서는 추가적으로 깃허브 연동을 하지 않으면 원격저장소의 데이터를 받아오려 할 때마다 깃허브 아이디와 개발자 키를 기입해야 한다. 이를 일일이 매번 하기 번거로우니 SSH Key를 깃허브에 등록하여 연동을 할 것이다.
익숙한 명령어를 쓰는게 아니라서 어려워 보일 순 있지만 매우매우 간단합니다.
EC2에서 SSH Key 생성하기
cd ~/.ssh
ssh-keygen -t rsa -C '깃허브 계정 메일'
위의 명령어를 실행한 후 cat id_rsa.pub를 실행하여 ssh public키를 출력하고 이를 복사해놓는다.
생성한 SSH Key 깃허브에 등록하기
깃허브 페이지에서 프로필 -> Settings
SSH and GPG keys

New SSH Key를 눌러 원하는 이름을 설정하고 값으로는 복사해놓은 ssh public키를 넣는다.
참고
깃허브의 레포지토리를
git clone하여 사용할 때 http가 아닌 ssh 주소로 clone을 해야 위에서 진행한 설정이 적용되므로 만약 위의 과정을 따랐는데 별도의 로그인 과정을 요청받는다면 이를 확인하도록 하자.
다음 포스팅에서는 이번에 진행했던 서비스의 재배포를 자동화시키는 법을 다뤄보겠다.