[python] FastAPI에서 CI/CD 통합하기

FastAPI는 빠르고 간단한 웹 프레임워크로서, 개발자들이 빠르게 API를 구축하고 배포할 수 있게 해줍니다. CI/CD (지속적인 통합/배포)는 개발 프로세스를 자동화하여 개발 효율성과 소프트웨어 품질을 향상시키는 중요한 구성 요소입니다. 이 문서에서는 FastAPI 프로젝트에서 CI/CD를 통합하는 방법에 대해 알아보겠습니다.

CI 설정

CI를 통합하기 위해 GitHub Actions를 사용할 것입니다. 먼저, .github/workflows 디렉토리 아래에 automation.yml 파일을 생성합니다.

name: CI

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - name: Check out repository
      uses: actions/checkout@v2

    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: 3.x

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt

    - name: Test
      run: pytest

    - name: Lint
      run: flake8 .

위의 코드는 다음과 같은 작업을 수행합니다:

  1. GitHub Actions을 통해 CI 작업을 설정합니다.
  2. 코드를 체크아웃 합니다.
  3. Python 3.x를 설정하고 의존성을 설치합니다.
  4. 테스트를 실행합니다.
  5. 코드 리뷰 도구인 flake8을 실행하여 코드 스타일을 검사합니다.

CD 설정

CD를 통합하기 위해 Heroku를 사용할 것입니다. Heroku에는 간단한 명령어로 애플리케이션을 배포할 수 있습니다. 먼저, Heroku에 새로운 애플리케이션을 만들고, Procfile이라는 파일을 생성합니다.

web: uvicorn main:app --host 0.0.0.0 --port $PORT

위의 코드는 Heroku에서 애플리케이션을 실행할 때 사용될 명령어를 정의합니다.

다음으로, .github/workflows 디렉토리 아래에 deployment.yml 파일을 생성합니다.

name: CD

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Check out repository
      uses: actions/checkout@v2

    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: 3.x

    - name: Install Heroku CLI
      run: |
        curl https://cli-assets.heroku.com/install.sh | sh

    - name: Authenticate with Heroku
      run: heroku auth:token

    - name: Deploy
      run: |
        heroku git:remote -a your-app-name
        git push heroku HEAD:main

위의 코드는 다음과 같은 작업을 수행합니다:

  1. GitHub Actions을 통해 CD 작업을 설정합니다.
  2. 코드를 체크아웃 합니다.
  3. Python 3.x를 설정합니다.
  4. Heroku CLI를 설치합니다.
  5. Heroku와 인증합니다.
  6. 애플리케이션을 배포합니다.

Conclusion

이렇게하면 FastAPI 프로젝트에 CI/CD를 통합할 수 있습니다. CI를 통해 코드 품질을 실시간으로 확인하고, CD를 통해 더 신속하게 배포할 수 있습니다. GitHub Actions와 Heroku의 강력함을 활용하여 개발 프로세스를 자동화하고, 개발 생산성과 팀의 협업을 향상시킬 수 있습니다.

References