본문 바로가기
Program Development Tips/GitHub Actions

GitHub Actions를 활용한 자동 배포(CD) 설정 방법

by Maccrey Coding 2024. 8. 31.
728x90
반응형

 

소프트웨어 개발에서 지속적 배포(CD, Continuous Delivery/Deployment)는 코드 변경 사항이 자동으로 프로덕션 환경에 배포될 수 있도록 하는 중요한 과정입니다.

이번 글에서는 GitHub Actions를 활용해 자동 배포 파이프라인을 구축하는 방법을 소개합니다.

CD(지속적 배포)의 개념과 중요성

지속적 배포(CD)는 코드가 항상 배포 가능한 상태로 유지되도록 하며, 새로운 기능이나 수정사항이 자동으로 프로덕션 환경에 배포되는 것을 목표로 합니다.

CD를 통해 배포 과정을 자동화하면 수동 배포에서 발생할 수 있는 오류를 줄이고, 더 빠르고 안전하게 새로운 기능을 제공할 수 있습니다.

GitHub Actions에서 배포 워크플로우 설정하기

GitHub Actions는 코드를 자동으로 빌드하고 테스트한 후, 특정 조건이 만족되면 자동으로 배포까지 수행할 수 있는 워크플로우를 설정할 수 있습니다.

다음은 GitHub Actions에서 간단한 배포 워크플로우를 설정하는 예제입니다.

다양한 배포 환경으로 배포하는 방법

GitHub Actions를 사용하면 AWS, Heroku, Netlify 등 다양한 클라우드 플랫폼에 자동으로 코드를 배포할 수 있습니다.

아래는 각 플랫폼에 배포하는 예제입니다.

 

1. AWS S3와 CloudFront로 배포하기

name: Deploy to S3 and CloudFront

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Configure AWS credentials
      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: us-east-1

    - name: Deploy to S3
      run: aws s3 sync ./build s3://my-bucket-name --delete

    - name: Invalidate CloudFront cache
      run: aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} --paths "/*"

 

2. Heroku로 배포하기

name: Deploy to Heroku

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Heroku
      uses: akhileshns/heroku-deploy@v3.12.12
      with:
        heroku_api_key: ${{ secrets.HEROKU_API_KEY }}
        heroku_app_name: "my-heroku-app"
        heroku_email: "user@example.com"

 

3. Netlify로 배포하기

name: Deploy to Netlify

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Deploy to Netlify
      uses: nwtgck/actions-netlify@v1.1.3
      with:
        publish-dir: ./build
        production-deploy: true
      env:
        NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
        NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}

배포 조건 설정: 특정 브랜치에서만 배포

자동 배포 파이프라인을 설정할 때, 특정 브랜치에서만 배포가 이루어지도록 설정할 수 있습니다.

예를 들어, main 브랜치에서만 배포가 이루어지도록 설정하면, 의도치 않은 배포를 방지할 수 있습니다.

on:
  push:
    branches:
      - main

이 설정은 main 브랜치에 푸시가 발생할 때만 배포 워크플로우가 실행되도록 합니다.

배포 후 모니터링 및 롤백 전략

자동 배포가 완료된 후에는 배포된 코드의 상태를 모니터링하는 것이 중요합니다.

GitHub Actions와 같은 도구를 통해 배포 로그를 확인하고, 문제가 발생할 경우 신속하게 대응할 수 있습니다.

 

롤백 전략은 배포된 코드에 문제가 있을 때, 이전 안정된 버전으로 되돌리는 절차입니다.

예를 들어, AWS에서는 이전에 배포한 S3 버전으로 롤백하거나, Heroku에서는 이전의 릴리즈로 쉽게 복구할 수 있습니다.

 

GitHub Actions를 통해 CD 파이프라인을 구축하면, 코드의 변경 사항이 자동으로 프로덕션 환경에 배포되며, 다양한 클라우드 플랫폼에 쉽게 배포할 수 있습니다.

또한, 배포 후 모니터링과 롤백 전략을 통해 안정적인 배포를 보장할 수 있습니다.

이 가이드를 통해 GitHub Actions를 활용한 자동 배포 시스템을 시작해보세요!

 

 

728x90
반응형