NestJS CI/CD 적용하기 (2)

Seunghwa's Devlog·2023년 2월 21일
0

NestJs

목록 보기
14/15
post-thumbnail

이전 글에서 Code Deploy를 사용하여 CI/CD 구축을 위한 설정 방법을 포스팅 했었는데, 구축하고 나서 생각을 했을 때 굳이 사용할 필요가 없을 것 같다.

현재 배포 방식은 EC2 ssh 환경에서 pm2로 무중단 배포를 적용했고, 변경 사항이 생길 때 마다 ssh 환경에 접속하여 아래의 작업을 수행해줘야 하는 번거로움이 있다.

cd <project directory>
git pull <branch>
npm run build
pm2 restart 

이 작업을 자동화 해보도록 하자

github Action workflow 작성하기

github repository에서 Actions를 클릭하고 set up workflow yourself를 클릭해서 작성해보자

그럼 이러한 화면이 뜨는데, 저기에 내 환경에 맞는 Workflow를 작성해주면 된다.

name: deploy

on:
  push:
    branches:
      - [배포할 branch]
jobs:
  AUTO_DEPLOY:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Run scripts in server
        uses: appleboy/ssh-action@master
        with:
          password: ${{ secrets.PASSWORD }}
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          port: ${{ secrets.PORT }}
          script: ${{ secrets.SCRIPT }}

EC2의 ssh 환경과 연결을 위해 appleboy/ssh-action@master workflow를 사용하였다. 여기에서 공식 docs를 확인할 수 있다.

❗️ Workflow 작성시 syntax를 유의하여 작성해야 한다. 공식문서를 읽어보고 참고하여 작성하도록 하자

Gitub Secret 적용

Workflow가 실행될 때 필요한 정보들 중 외부에 노출되면 안되는 정보들을 github secret에 적용해야 한다.

Settings > Security > Secrets and variables > Actions에 등록해주면 된다.

  • Host는 EC2 인스턴스의 퍼블릭 IP주소를 입력해주면 된다.
  • Password는 EC2에 로그인 하는 방식을 키페어 방식외에 비밀번호로 로그인하는 방식을 통해 설정한 비밀번호를 입력하면 된다.
    (참고 : EC2 ssh 환경 비밀번호로 로그인 하기)
  • Username은 ubuntu로 입력해주자. OS별로 username이 다르므로 공식문서에서 확인해보고 자신의 OS에 맞게 작성해주면 된다.
  • Port는 ssh 기본포트인 22로 입력해주자.
  • Script는 이렇게 입력해주었다.
cd <project directory>
git pull <branch>
npm run build
pm2 restart 

정상적으로 적용되었는지 확인

느낀점

너무 간단한 CI/CD 환경 구축이라 아직 해봐야 할게 산더미다. 추후에는 PR시 Test 적용과 Docker를 사용한 무중단 배포환경의 CI/CD를 적용해보도록 하자.

참고 문서 : https://github.com/appleboy/ssh-action
https://docs.github.com/ko/actions/using-workflows/workflow-syntax-for-github-actions
https://rakeshwrites.medium.com/how-to-enable-password-authentication-in-aws-ec2-instances-26fbdddd74b0

profile
에러와 부딪히고 새로운 것을 배우며 성장해가는 과정을 기록합니다!

0개의 댓글