[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 .
위의 코드는 다음과 같은 작업을 수행합니다:
- GitHub Actions을 통해 CI 작업을 설정합니다.
- 코드를 체크아웃 합니다.
- Python 3.x를 설정하고 의존성을 설치합니다.
- 테스트를 실행합니다.
- 코드 리뷰 도구인 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
위의 코드는 다음과 같은 작업을 수행합니다:
- GitHub Actions을 통해 CD 작업을 설정합니다.
- 코드를 체크아웃 합니다.
- Python 3.x를 설정합니다.
- Heroku CLI를 설치합니다.
- Heroku와 인증합니다.
- 애플리케이션을 배포합니다.
Conclusion
이렇게하면 FastAPI 프로젝트에 CI/CD를 통합할 수 있습니다. CI를 통해 코드 품질을 실시간으로 확인하고, CD를 통해 더 신속하게 배포할 수 있습니다. GitHub Actions와 Heroku의 강력함을 활용하여 개발 프로세스를 자동화하고, 개발 생산성과 팀의 협업을 향상시킬 수 있습니다.