CI/CD 파이프라인 구축 자동화 (GitHub Actions 기준)

Django 프로젝트의 배포 과정을 자동화하는 CI/CD 파이프라인을 GitHub Actions로 구축하여 수동 배포의 번거로움과 실수를 줄이고, 코드 변경 사항을 빠르고 안정적으로 서버에 반영

CI/CD와 GitHub Actions의 필요성

CI (Continuous Integration, 지속적 통합): 개발자가 코드를 변경하면 자동으로 빌드되고 테스트되어 중앙 리포지토리에 통합되는 프로세스로 코드 충돌 문제를 조기에 발견하고 코드 품질 유지

CD (Continuous Delivery/Deployment, 지속적 제공/배포): CI 단계를 통과한 코드를 실제 운영 환경에 자동으로 배포하는 프로세스

GitHub Actions 장점:

  • GitHub에 완전히 통합되어 별도의 CI/CD 서비스 없이 바로 사용 가능

  • push, pull_request 등 다양한 트리거로 워크플로우 실행

  • 풍부한 마켓플레이스의 Action 활용 가능

  • Public 리포지토리 무료, Private 리포지토리도 충분한 무료 사용량 제공

GitHub Actions 핵심 개념

  • Workflow: .github/workflows/ 디렉토리의 YAML 파일로 정의된 자동화 프로세스

  • Event: 워크플로우 실행을 유발하는 특정 활동 (push, pull_request 등)

  • Job: 워크플로우를 구성하는 작업 단위로 독립된 가상 환경에서 실행

  • Step: Job을 구성하는 개별 작업 단위

  • Action: 복잡한 작업을 캡슐화한 재사용 가능한 코드

  • Runner: 워크플로우를 실행하는 가상 서버

CI 파이프라인 구축: 테스트 자동화

main 브랜치에 push되거나 Pull Request가 생성될 때 자동으로 테스트를 실행하는 워크플로우 구성

주요 기능:

  • 여러 파이썬 버전에서 동시 테스트로 호환성 검증

  • pip 패키지 캐싱으로 워크플로우 실행 속도 향상

  • 환경 변수를 통한 테스트 설정 주입

CD 파이프라인 구축: Docker 이미지 빌드 및 배포 자동화

CI를 통과한 코드를 Docker 이미지로 빌드하고 컨테이너 레지스트리에 푸시한 뒤 실제 서버에 배포

GitHub Secrets 설정

민감한 정보는 GitHub 리포지토리의 Settings > Secrets and variables > Actions에 안전하게 저장

  • Docker Hub 계정 정보

  • 서버 접속 정보 (SSH Private Key 포함)

  • Django Secret Key

  • 데이터베이스 연결 정보

배포 워크플로우 구성

  • Docker 이미지 빌드 및 Docker Hub 푸시

  • SSH를 통한 서버 접속

  • 최신 이미지 pull 및 컨테이너 재시작

  • 환경 변수 설정 및 배포 스크립트 실행

실무 팁과 주의사항

환경 분리: GitHub Actions의 Environments 기능으로 development, staging, production 환경별 다른 Secret과 보호 규칙 설정

Secret 관리: 최소 권한 원칙 적용, 가능하면 OIDC 방식으로 임시 토큰 사용

워크플로우 최적화:

  • 캐싱 적극 활용으로 빌드 시간 단축

  • needs 키워드로 Job 간 실행 순서 명확화

  • 재사용 가능한 워크플로우 작성

보안 강화:

  • 신뢰할 수 있는 Action 사용

  • 배포 스크립트는 서버에 미리 작성하여 관리

모니터링: 워크플로우 실패 시 Slack이나 이메일 알림 설정으로 빠른 대응

Last updated