← 개발 로그 목록

my-blog: GitHub Actions CI/CD 파이프라인 구축

/ 7분 분량 / 개발 로그

이번 커밋은 프로젝트의 안정성과 배포 자동화를 위해 GitHub Actions를 활용한 CI/CD 파이프라인을 구축하는 데 중점을 두었습니다.

my-blog: GitHub Actions CI/CD 파이프라인 구축

이번 커밋은 프로젝트의 안정성과 배포 자동화를 위해 GitHub Actions를 활용한 CI/CD 파이프라인을 구축하는 데 중점을 두었습니다.

요약

이번 작업에서는 .github/workflows/ci-cd.yml 파일을 추가하여 GitHub Actions 워크플로우를 설정했습니다. 이 워크플로우는 파이썬 패키지에 대한 포괄적인 CI/CD 파이프라인을 구축하며, 린팅, 테스트, Docker 이미지 빌드, 보안 스캔, 스테이징 및 프로덕션 환경 배포를 자동화합니다. 작업은 2026년 1월 30일에 완료되었습니다.

배경 및 목적

최근 프로젝트 규모가 커지면서 수동적인 빌드, 테스트, 배포 과정에서 발생하는 오류와 비효율성을 개선할 필요성이 대두되었습니다. 특히, 코드 품질을 일관되게 유지하고 새로운 기능 배포 시 안정성을 확보하는 것이 중요해졌습니다. 이러한 문제를 해결하고 개발 및 배포 프로세스를 자동화하기 위해 GitHub Actions를 활용한 CI/CD 파이프라인을 구축하는 것을 목표로 하였습니다.

구현 내용

주요 변경사항은 .github/workflows/ci-cd.yml 파일에 GitHub Actions 워크플로우 정의를 추가한 것입니다. 이 워크플로우는 다음과 같은 단계를 포함합니다.

  • 린팅: 코드 스타일 및 잠재적 오류를 검사합니다.
  • 테스트: 단위 테스트 및 통합 테스트를 실행하여 코드의 정확성을 검증합니다.
  • Docker 이미지 빌드: 애플리케이션 실행을 위한 Docker 이미지를 생성합니다.
  • 보안 스캔: 코드의 보안 취약점을 탐지합니다.
  • 스테이징 환경 배포: 개발 버전의 안정성을 검증하기 위한 스테이징 환경에 배포합니다.
  • 프로덕션 환경 배포: 최종 검증 후 실제 운영 환경에 배포합니다.

변경된 파일 목록

  • .github/workflows/ci-cd.yml

코드 라인 수

  • 추가: 약 100 라인 (정확한 수치는 워크플로우의 복잡성에 따라 달라질 수 있습니다.)
  • 삭제: 0 라인

핵심 코드 설명

name: CI/CD Pipeline

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

jobs:
  build_and_test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.x' # 사용할 파이썬 버전 지정

      - name: Install dependencies
        run: pip install -r requirements.txt

      - name: Lint with flake8
        run: flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics

      - name: Test with pytest
        run: pytest

      - name: Build Docker image
        run: docker build -t my-blog-app:latest .

  # ... (보안 스캔, 스테이징/프로덕션 배포 단계 추가)

위 YAML 코드는 GitHub Actions가 수행할 작업들을 정의합니다. on 섹션에서는 어떤 이벤트(푸시 또는 풀 리퀘스트)가 발생했을 때 워크플로우가 트리거될지를 지정합니다. jobs 섹션에서는 실제 실행될 작업들을 정의하며, 각 작업은 여러 steps로 구성됩니다.

기술적 의사결정

GitHub Actions는 GitHub 플랫폼에 통합되어 있어 별도의 외부 서비스 설정 없이 쉽게 CI/CD 파이프라인을 구축할 수 있다는 장점이 있습니다. 또한, 풍부한 액션 마켓플레이스를 통해 다양한 기능을 쉽게 통합할 수 있습니다.

다른 CI/CD 도구(예: Jenkins, GitLab CI)도 고려할 수 있었지만, 현재 프로젝트가 GitHub를 기반으로 개발되고 있다는 점을 감안할 때, GitHub Actions가 가장 자연스럽고 효율적인 선택이라고 판단했습니다. 통합성, 사용 편의성, 커뮤니티 지원 등을 종합적으로 고려했을 때 GitHub Actions가 가장 적합했습니다.

장점

  • GitHub와의 완벽한 통합
  • 다양하고 풍부한 사전 구축된 액션
  • 무료 티어 제공으로 인한 초기 비용 절감
  • 쉬운 설정 및 관리

단점

  • 매우 복잡하거나 특수한 요구사항의 경우, 다른 도구가 더 유연할 수 있음
  • 대규모 프로젝트의 경우, 비용 증가 가능성

배운 점 및 개선점

이번 작업을 통해 GitHub Actions를 이용한 CI/CD 파이프라인 구축의 전반적인 과정을 이해할 수 있었습니다. 특히, 코드 품질 유지, 테스트 자동화, 그리고 배포 프로세스의 효율성을 크게 향상시킬 수 있다는 점을 다시 한번 확인할 수 있었습니다.

향후 개선할 점으로는 다음과 같은 사항들을 고려할 수 있습니다.

  • 환경 변수 관리: 보안이 중요한 정보(API 키 등)를 안전하게 관리하기 위해 GitHub Secrets 기능을 적극적으로 활용할 예정입니다.
  • 배포 전략: 현재는 간단한 배포 방식으로 설정되었지만, 향후 블루/그린 배포, 카나리 배포 등 보다 정교한 배포 전략을 도입하여 서비스 안정성을 높일 수 있습니다.
  • 알림 기능: 빌드 실패 시 슬랙 등 협업 툴로 알림을 받아 즉각적인 대응이 가능하도록 설정할 계획입니다.

참고 자료