GitHub Actions로 CI/CD 파이프라인 구축하기: 초보자를 위한 완벽 가이드

GitHub Actions란?

GitHub Actions는 GitHub에서 제공하는 자동화 도구로, 코드 빌드, 테스트, 배포 과정을 자동화할 수 있는 CI/CD(Continuous Integration/Continuous Deployment) 플랫폼입니다. 별도의 서버 구축 없이 GitHub 저장소에서 직접 워크플로우를 설정할 수 있어 개발자들에게 인기가 높습니다.

특히 오픈소스 프로젝트의 경우 무료로 사용할 수 있으며, Private 저장소도 월 2,000분의 무료 실행 시간을 제공합니다.

CI/CD가 필요한 이유

전통적인 개발 방식에서는 코드를 작성한 후 수동으로 테스트하고, 빌드하고, 서버에 배포해야 했습니다. 이 과정은 시간이 오래 걸릴 뿐만 아니라 사람의 실수로 인한 오류 가능성도 높습니다.

CI/CD를 도입하면 다음과 같은 이점을 얻을 수 있습니다:

  • 코드 푸시 시 자동으로 테스트가 실행되어 버그를 조기에 발견
  • 일관된 빌드 및 배포 프로세스 보장
  • 개발자가 코드 작성에 집중할 수 있는 환경 조성
  • 배포 주기 단축 및 생산성 향상

GitHub Actions 기본 구조

GitHub Actions는 YAML 파일로 워크플로우를 정의합니다. 저장소의 .github/workflows/ 디렉토리에 YAML 파일을 생성하면 자동으로 인식됩니다.

워크플로우는 다음 요소로 구성됩니다:

  • Workflow: 자동화된 전체 프로세스
  • Event: 워크플로우를 트리거하는 이벤트 (예: push, pull_request)
  • Job: 워크플로우 내에서 실행되는 작업 단위
  • Step: Job 안에서 순차적으로 실행되는 개별 작업
  • Action: 재사용 가능한 작업 단위

실전 예제: Node.js 프로젝트 CI/CD 구축

Node.js 웹 애플리케이션을 예시로 실제 CI/CD 파이프라인을 구축해보겠습니다. 아래는 코드 푸시 시 자동으로 테스트를 실행하는 기본 워크플로우입니다.

name: CI/CD Pipeline

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

jobs:
  test:
    runs-on: ubuntu-latest
    
    steps:
    - name: 코드 체크아웃
      uses: actions/checkout@v3
    
    - name: Node.js 설정
      uses: actions/setup-node@v3
      with:
        node-version: '18'
        cache: 'npm'
    
    - name: 의존성 설치
      run: npm ci
    
    - name: 테스트 실행
      run: npm test
    
    - name: 빌드
      run: npm run build

  deploy:
    needs: test
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    
    steps:
    - name: 배포 스크립트 실행
      run: echo "배포 진행"

워크플로우 설명

위 예제는 두 개의 Job으로 구성되어 있습니다. test Job은 main과 develop 브랜치에 푸시되거나 main 브랜치로 PR이 생성될 때 실행됩니다. 코드를 체크아웃하고, Node.js 환경을 설정한 후, 의존성을 설치하고 테스트를 실행합니다.

deploy Job은 test Job이 성공적으로 완료된 후(needs: test) main 브랜치에서만 실행됩니다. 실제 프로젝트에서는 AWS, Azure, Vercel 등 원하는 플랫폼으로 배포하는 스크립트를 추가하면 됩니다.

시크릿 관리하기

배포 과정에서는 API 키, 데이터베이스 비밀번호 등 민감한 정보가 필요합니다. 이러한 정보는 코드에 직접 작성하면 안 되며, GitHub Secrets를 활용해야 합니다.

저장소 Settings > Secrets and variables > Actions에서 시크릿을 추가한 후, 워크플로우에서 ${{ secrets.SECRET_NAME }} 형태로 참조할 수 있습니다.

핵심 요약

GitHub Actions를 활용하면 별도의 CI/CD 서버 없이도 자동화된 개발 워크플로우를 구축할 수 있습니다. .github/workflows/ 디렉토리에 YAML 파일을 작성하여 테스트, 빌드, 배포 과정을 자동화하고, GitHub Secrets로 민감한 정보를 안전하게 관리하세요. 처음에는 간단한 테스트 자동화부터 시작하여 점진적으로 배포 자동화까지 확장해나가는 것을 추천합니다.

이 글이 도움이 되셨나요? ☕

Buy me a coffee

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다