[GitHub Actions] CI/CD 자동화 프로세스

혜진·2024년 12월 30일

GitHub

목록 보기
2/3
post-thumbnail

GitHub Actions

CI/CD를 간단히 구현할 수 있도록 이벤트 기반으로 워크플로우를 자동화하는 도구

GitHub Actions 특징

  • 이벤트 기반 실행: 코드 푸시, 풀 리퀘스트, 이슈 생성 시 실행
  • 멀티 플랫폼 지원: Linux, macOS, Windows 환경에서 실행 가능
  • YAML 파일 구성: .github/workflows 디렉토리에 워크플로우를 정의

CI (Continuous Integration) 지속적 통합

지속적 통합은 개발자가 작업한 코드를 정기적으로 중앙 저장소(Git)에 병합하고, 병합된 코드에 대해 자동으로 빌드와 테스트를 수행하는 과정

CD (Continuous Deployment/Delivery) 지속적 배포/전달

  • 지속적 전달(Continuous Delivery): 코드를 자동으로 테스트하고 준비 상태로 유지하여, 배포를 수동으로 승인
  • 지속적 배포(Continuous Deployment): 코드 변경 사항이 테스트를 통과하면, 프로덕션 환경까지 자동으로 배포

CI/CD 파이프라인의 주요 단계

  • 코드 작성 및 커밋: 코드를 작성하고 GitHub와 같은 버전 관리 시스템에 커밋
  • 자동 빌드: 코드가 중앙 저장소에 병합되면, GitHub Actions가 자동으로 코드를 빌드
  • 자동 테스트: 빌드된 코드를 기반으로 단위 테스트, 통합 테스트 등 실행
  • 배포: 테스트를 통과한 코드가 서버 또는 클라우드 환경에 자동 배포

GitHub Actions로 CI/CD 구현

📑 1. 기본 Workflow

코드 푸시 시 빌드, 테스트, 배포

name: CI/CD Pipeline

on:
  push:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v3
      - name: Install Dependencies
        run: npm install
      - name: Run Tests
        run: npm test

📑 2. SSH 키 활용

원격 서버 배포

  • SSH 키를 GitHub Secrets에 저장
  • 원격 서버에서 배포 스크립트 실행
- name: Configure SSH
  uses: webfactory/ssh-agent@v0.5.3
  with:
    ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}

- name: Deploy Application
  run: |
    ssh -o StrictHostKeyChecking=no user@server-ip << 'EOF'
    cd /path/to/app
    docker-compose up -d
    EOF

📑 3. Docker 이미지 관리

Docker 상태 확인

- name: Check Docker Status
  run: |
    ssh -o StrictHostKeyChecking=no user@server-ip << 'EOF'
    docker ps
    EOF
Docker 이미지 빌드 및 푸시
yaml
코드 복사
- name: Build and Push Docker Image
  run: |
    docker build -t your-image-name .
    docker push your-docker-repo/your-image-name:latest

📑 4. 배포 후 확인

Health Check

- name: Check Application Health
  run: curl -f http://your-app-domain/health || exit 1

0개의 댓글