[CI/CD] git clone+PM2를 이용한 EC2 배포 (2)

woody·2024년 11월 25일

CI/CD

목록 보기
2/3
post-thumbnail

⭐목표⭐

'EC2에 git 연동하기'와 '최신 버전으로 재배포하기'를 해보자

  • 속해 있는 브랜치의 최신 상태로 업데이트한다.
  • 그 상태에서 해당 서비스만 재시작한다. (pmw reload 서비스명)
  • 깃허브의 상태를 가져오려 할 때마다 깃허브 로그인을 해야 하므로 깃허브와 EC2를 연동해준다.

1. 최신 버전으로 재배포하기

(현재 모든 서비스를 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 cipackage-lock.json 파일에 정의된 의존성을 설치하는 명령어인데 --omit=dev은 개발 의존성은 무시하라는 얘기이다. (필수X)
  • pm2 reload { 서비스 명 } : 재배포하고자하는 서비스만 reload를 진행한다.

위의 과정을 거쳐 원격 저장소의 최신 버전으로 재배포를 진행할 수 있다.

2. EC2에 git 연동하기

EC2에서는 추가적으로 깃허브 연동을 하지 않으면 원격저장소의 데이터를 받아오려 할 때마다 깃허브 아이디와 개발자 키를 기입해야 한다. 이를 일일이 매번 하기 번거로우니 SSH Key를 깃허브에 등록하여 연동을 할 것이다.

  • EC2에서 SSH Key 생성하기
  • 생성한 SSH Key 깃허브에 등록하기

익숙한 명령어를 쓰는게 아니라서 어려워 보일 순 있지만 매우매우 간단합니다.

  1. EC2에서 SSH Key 생성하기

    cd ~/.ssh
    ssh-keygen -t rsa -C '깃허브 계정 메일'

    위의 명령어를 실행한 후 cat id_rsa.pub를 실행하여 ssh public키를 출력하고 이를 복사해놓는다.

  2. 생성한 SSH Key 깃허브에 등록하기

    • 깃허브 페이지에서 프로필 -> Settings

    • SSH and GPG keys

    • New SSH Key를 눌러 원하는 이름을 설정하고 값으로는 복사해놓은 ssh public키를 넣는다.

참고

깃허브의 레포지토리를 git clone 하여 사용할 때 http가 아닌 ssh 주소로 clone을 해야 위에서 진행한 설정이 적용되므로 만약 위의 과정을 따랐는데 별도의 로그인 과정을 요청받는다면 이를 확인하도록 하자.



‼️마무리

다음 포스팅에서는 이번에 진행했던 서비스의 재배포를 자동화시키는 법을 다뤄보겠다.

0개의 댓글