my-blog: GitHub Actions CI/CD 파이프라인 구축
이번 커밋은 프로젝트의 안정성과 배포 자동화를 위해 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 기능을 적극적으로 활용할 예정입니다.
- 배포 전략: 현재는 간단한 배포 방식으로 설정되었지만, 향후 블루/그린 배포, 카나리 배포 등 보다 정교한 배포 전략을 도입하여 서비스 안정성을 높일 수 있습니다.
- 알림 기능: 빌드 실패 시 슬랙 등 협업 툴로 알림을 받아 즉각적인 대응이 가능하도록 설정할 계획입니다.
참고 자료
- GitHub Actions 공식 문서: https://docs.github.com/en/actions
- Python 패키지 CI/CD 예제 (참고용): https://github.com/marketplace/actions/python-package-ci