Django 백엔드 CI/CD 구축기 (feat. Github Actions) - 3

hwiba·2022년 10월 22일
0

CI/CD

목록 보기
3/3
post-thumbnail

이전글에 이어서 EC2에 자동배포가 될 수 있도록 Github Actions 워크플로우를 작성하겠습니다 원본 소스를 보실려면 여기를 클릭해주세요.

현재 E-Commerce 프로젝트에서 main 배포브랜치에 push 또는 Pull Request 될때 변경된 코드가 자동으로 EC2에 배포되도록 하겠다.

환경변수 설정

Github Actions 가상 인스턴스환경에서 EC2로 접속하기 위해서는 미리 환경변수를 세팅해놓아야되기 때문에, 필요한 환경벼수부터 먼저 생성해두기로 하자

필요한 환경변수

  • AWS_PRIVATE_KEY : EC2 접속을 위한.pem
  • HOST : EC2 public IP
  • USER_NAME : EC2 접속 네임

Github Repo -> Setting -> Secrets -> Actions

  • Github Repo -> Setting -> Secrets -> Actions에서 New repository secret 버튼을 클릭하여 위의 3개의 변수를 생성한다.


워크플로우 작성

name: Deploy to EC2

on:  # main브랜치에 push 또는 PR이 날라올때 동작
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    name: build
    runs-on: ubuntu-latest
    steps:
    - name: deploy

      # 위의 secret 변수를 설정한 것을 가져와서 세팅
      env:  
            PRIVATE_KEY: ${{ secrets.AWS_PRIVATE_KEY  }}
            HOSTNAME : ${{ secrets.HOST  }}
            USER_NAME : ${{ secrets.USER_NAME  }}

      # 가상인스턴스에서 EC2 접속 후 변경된 소스 가져와서 다시 도커컴포즈 빌드 후 실행
      run: |
        echo "$PRIVATE_KEY" > private_key && chmod 600 private_key
        ssh -o StrictHostKeyChecking=no -i private_key ${USER_NAME}@${HOSTNAME} '
          cd /home/ubuntu/e-commerce &&
          git checkout main &&
          git fetch --all &&
          git reset --hard origin/main &&
          git pull origin main &&
          sudo docker-compose -f docker-compose.prod.yml up -d --build 
        '

Continuous Deploy Test

이제 각 기능을 통합한 develop에서 main 브랜치로 push 하여 자동배포가 되는지 확인해보자.

  • Github Actions의 deploy 잡이 동작하는 모습
  • 해당 워크플로우가 성공적으로 동작한 모습

Github Actions를 이용한 CI/CD 구축 후기

Github Actions와 branch를 이용해서 각 기능이 통합 되어질 때 자동으로 테스트 및 배포 이루어질 수 있도록 해보았다.

처음에 CI/CD 에대한 이해가 적어 관련 문서 읽는데만 하루가 꼬박 걸렸고, Github Actions 에대한 이해가 적어 설정을 제대로 적용하는 것이 많이 어려웠던 것 같다.

하지만 CI/CD 를 구축해놓으니 코드의 빈번한 수정과 추가가 이루어져도 소프트웨어의 품질을 높일 수 있고 에자일하게 개발할 수 있도록 도움을 많이 줄 수 있어서 많은 공부가 되었고 앞으로 현업에서도 많은 도움이 될 것 같다.

profile
도전하는 사랑하는 개발자

0개의 댓글