GitHub Actions을 사용한 CI/CD

joyoung·2025년 2월 22일

CI/CD란

CI/CD는 지속적 통합(Continuous Integration)지속적 제공/배포(Continuous Delivery/Deployment)를 의미
개발과 배포 과정을 자동화하여 더 빠르고 안정적인 소프트웨어 릴리스를 가능하게 하는 개발 문화 및 실천 방식


CI (Continuous Integration, 지속적 통합)

  • 개발자들의 코드 변경 사항을 자주 메인 브랜치에 통합
  • 변경 시마다 자동으로 빌드 및 테스트 실행
  • 코드 품질 및 충돌을 조기에 발견 가능

예시 작업

  • 코드 컴파일
  • 단위 테스트
  • 정적 코드 분석

CD (Continuous Delivery, 지속적 제공)

  • 테스트를 통과한 코드를 자동으로 릴리스 준비 상태로 유지
  • 스테이징 환경에 자동 배포 가능
  • 프로덕션 배포는 수동으로 진행 (버튼 클릭 등)

예시 작업

  • 통합 테스트
  • 성능 테스트
  • 보안 스캔

CD (Continuous Deployment, 지속적 배포)

  • 테스트를 통과한 코드를 프로덕션까지 자동 배포
  • 사람의 개입 없이 릴리스 완료
  • 빠른 피드백 및 버그 수정 가능

예시 작업

  • 자동 릴리스 및 배포
  • 모니터링
  • 롤백 처리

GitHub Actions

GitHub에서 제공하는 CI/CD 자동화 도구
.github/workflows 디렉토리에 워크플로우 정의 파일(.yml)을 추가하여 사용
브랜치에 변경이 생기면 자동으로 정의된 작업 실행

기본 구조

  1. 워크플로우 파일 생성: .github/workflows/github-actions.yml
  2. 브랜치에 푸시하거나 PR이 생성되면 자동 실행
  3. 테스트, 빌드, 배포 등 단계 정의 가능

자세한 문서: GitHub Actions Quickstart


예시: GitHub Actions 워크플로우 설정

아래는 Node.js 프로젝트에서 테스트, 빌드, AWS S3 배포를 자동화하는 예시

name: CI/CD Pipeline

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

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3

    - name: Setup Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '18'

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm test

    - name: Build
      run: npm run build

    - name: Deploy to S3
      uses: aws-actions/configure-aws-credentials@v1
      with:
        aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
        aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        aws-region: ap-northeast-2

실행 결과 확인

GitHub 저장소의 Actions 탭에서 각 빌드의 성공 여부 및 로그를 확인 가능

action-result-1
action-result-2

profile
꾸준히

0개의 댓글