본문 바로가기
카테고리 없음

[파이썬 심화] CI/CD의 뜻, GitHub Actions 자동화, 유형별 활용 방안

by 개발자를 꿈꾸는 사람들과 함꼐 2025. 4. 15.

CI/CD란 무엇인가?

CI (Continuous Integration)는 코드가 변경될 때마다 자동으로 빌드, 테스트, 병합 과정을 수행하는 시스템입니다.
CD (Continuous Deployment)는 테스트를 통과한 코드를 자동으로 배포하는 과정까지 포함합니다.

CI/CD가 필요한 이유

      
  • 테스트 누락 방지
  •   
  • 버그 조기 발견 및 품질 유지
  •   
  • 협업 및 코드 리뷰 효율 향상
  •   
  • 배포 속도 자동화 → 개발 집중도 향상

파이썬 프로젝트에서는 pytest로 테스트 코드를 작성하고,   GitHub Actions를 통해 자동 실행되는 테스트 파이프라인을 구축할 수 있습니다.

GitHub Actions로 테스트 자동화 설정하기

GitHub Actions는 GitHub에서 제공하는 무료 CI/CD 도구입니다.
코드 푸시(push), PR 생성, 스케줄 등 다양한 이벤트에 따라 워크플로우가 실행됩니다.

프로젝트 구조 예시

my_project/
├── app/
│   └── calculator.py
├── tests/
│   └── test_calculator.py
├── requirements.txt
└── .github/
    └── workflows/
        └── python-ci.yml

1. GitHub Actions 워크플로우 파일 작성

📁 .github/workflows/python-ci.yml

name: Python CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3

    - name: Set up Python
      uses: actions/setup-python@v4
      with:
        python-version: "3.10"

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

    - name: Run tests with pytest
      run: |
        pytest

해석:

      
  • on: main 브랜치로 push 또는 PR 시 자동 실행
  •   
  • runs-on: GitHub에서 제공하는 Ubuntu 환경에서 실행
  •   
  • actions/setup-python: 테스트에 사용할 파이썬 버전 지정
  •   
  • pytest: 테스트 코드를 실행하는 명령

2. requirements.txt 예시

pytest
requests

CI 환경은 항상 깨끗한 상태에서 시작하므로, 테스트에 필요한 모든 패키지를 requirements.txt에 명시해야 합니다.

유형별 실제 활용 방안

1. 여러 Python 버전에서 테스트하기

strategy:
  matrix:
    python-version: ["3.8", "3.9", "3.10"]

이렇게 하면 다양한 버전에서 테스트를 병렬로 수행할 수 있어 호환성 검증에 유리합니다.

2. 커버리지 보고서 생성

pip install pytest-cov

pytest --cov=app tests/

pytest-cov를 활용해 테스트 커버리지를 측정하면, 테스트가 얼마나 전체 코드를 커버하고 있는지 시각적으로 확인할 수 있습니다.
codecov, coveralls 같은 서비스와 연동도 가능합니다.

3. 실패한 테스트만 다시 실행

pytest --lf

테스트 자동화는 반복 속도를 높이는 것이 핵심입니다.
--lf 옵션은 가장 최근에 실패한 테스트만 다시 실행해 빠르게 디버깅할 수 있도록 도와줍니다.

4. 빌드 뱃지 추가 (README에 표시)

![CI](https://github.com/username/repo/workflows/Python%20CI/badge.svg)

GitHub Actions 워크플로우의 상태를 README에 뱃지로 표시하면,   프로젝트의 안정성과 신뢰도를 외부 사용자에게 전달할 수 있습니다.