카테고리 없음

GitHub Actions를 사용한 CI/CD 파이프라인 구성 가이드

idea9329 2024. 9. 30. 10:59
반응형

1. GitHub Actions란?

GitHub Actions는 GitHub에서 제공하는 자동화 도구로, 코드 푸시(push), 풀 리퀘스트(PR), 브랜치 관리 등 다양한 이벤트에 대해 자동화된 작업(workflow)을 실행할 수 있습니다. 이 도구를 사용하면 CI(Continuous Integration, 지속적 통합) 및 CD(Continuous Delivery/Deployment, 지속적 배포)를 쉽게 설정할 수 있습니다.

특히, GitHub Actions는 워크플로우 파일을 YAML 형식으로 작성하여 코드의 변경 사항이 발생할 때마다 빌드, 테스트, 배포 등 여러 작업을 자동으로 실행하도록 설정할 수 있습니다.

2. CI/CD란 무엇인가?

CI/CD는 소프트웨어 개발 및 배포 프로세스를 자동화하여 개발의 효율성을 높이는 방법입니다.

  • CI (Continuous Integration, 지속적 통합): 코드 변경 사항이 프로젝트에 통합될 때마다 자동으로 빌드 및 테스트를 수행하는 과정입니다.
  • CD (Continuous Delivery, 지속적 배포): CI 이후 검증된 코드를 프로덕션 환경에 배포하는 과정입니다. 자동 배포가 설정되어 있으면, 코드가 통합된 후 자동으로 배포까지 이루어집니다.

이 과정을 통해 코드의 오류를 빠르게 발견하고 수정할 수 있으며, 배포 과정에서 발생할 수 있는 실수를 줄일 수 있습니다.

3. GitHub Actions로 CI/CD 구성하는 방법

3.1. 기본 워크플로우 설정

GitHub Actions는 .github/workflows/ 디렉토리에 YAML 파일로 워크플로우를 정의합니다. 다음은 GitHub Actions에서 기본적인 CI/CD 워크플로우 파일을 설정하는 예시입니다.

# .github/workflows/ci-cd-pipeline.yml
name: CI/CD Pipeline

# 이 워크플로우가 언제 실행될지 정의
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

# 워크플로우 내에서 실행할 job들을 정의
jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # 리포지토리 체크아웃
      - name: Checkout code
        uses: actions/checkout@v2

      # Node.js 설치 및 종속성 설치
      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'

      - name: Install dependencies
        run: npm install

      # 테스트 실행
      - name: Run tests
        run: npm test

  deploy:
    runs-on: ubuntu-latest
    needs: build

    steps:
      # 리포지토리 체크아웃
      - name: Checkout code
        uses: actions/checkout@v2

      # 배포 스크립트 실행 (예: AWS, Heroku, Netlify 등으로 배포)
      - name: Deploy to production
        run: |
          echo "배포 명령어를 여기에 추가하세요."

위 예제는 다음과 같은 구조로 동작합니다:

  • push 또는 pull_request가 main 브랜치에 발생할 때 워크플로우가 실행됩니다.
  • build 작업에서 Node.js 프로젝트의 빌드 및 테스트가 수행됩니다.
  • deploy 작업은 build 작업이 완료된 후에 실행되며, 실제 배포 명령을 실행할 수 있습니다.

3.2. 다양한 서비스와의 통합

GitHub Actions는 다양한 서비스와 쉽게 통합됩니다. 예를 들어 AWS, Docker, Netlify, Firebase 등의 플랫폼으로 배포할 수 있으며, actions라는 패키지를 사용해 해당 서비스와 연결할 수 있습니다.

3.2.1. AWS 배포 예시

AWS에 애플리케이션을 배포하려면 aws-actions/configure-aws-credentials을 사용하여 GitHub Actions에서 AWS 자격 증명을 설정하고 aws cli 명령어로 배포할 수 있습니다.

- 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

3.2.2. Docker 이미지 빌드 및 배포 예시

Docker 이미지를 빌드하고 Docker Hub에 푸시하려면 다음과 같은 GitHub Actions 워크플로우를 작성할 수 있습니다.

- name: Log in to Docker Hub
  uses: docker/login-action@v1
  with:
    username: ${{ secrets.DOCKER_USERNAME }}
    password: ${{ secrets.DOCKER_PASSWORD }}

- name: Build Docker image
  run: docker build -t my-app .

- name: Push Docker image
  run: docker push my-app

3.3. Secrets 관리

배포 시 중요한 정보(예: API 키, 자격 증명 등)를 저장하기 위해 GitHub Secrets를 활용합니다. GitHub Secrets는 GitHub 리포지토리의 설정에서 추가할 수 있으며, YAML 파일에서 ${{ secrets.MY_SECRET }}와 같은 형식으로 사용할 수 있습니다.

4. GitHub Actions의 장점

  • 간편한 설정: GitHub 리포지토리에 YAML 파일 하나만 추가하면 CI/CD 파이프라인을 바로 설정할 수 있습니다.
  • 다양한 서비스와의 통합: GitHub Actions는 AWS, Google Cloud, Docker 등 여러 플랫폼과 손쉽게 연동할 수 있습니다.
  • 자동화: 코드 변경 사항이 있을 때마다 자동으로 빌드 및 테스트가 실행되므로, 안정적인 코드를 유지할 수 있습니다.
  • 강력한 커뮤니티: GitHub Actions는 다양한 오픈소스 액션을 지원하며, GitHub Marketplace에서 유용한 액션들을 쉽게 가져다 쓸 수 있습니다.

5. 결론

GitHub Actions는 CI/CD 파이프라인을 간편하고 효율적으로 구성할 수 있는 도구입니다. 이 가이드를 통해 GitHub Actions의 기본적인 사용법과 CI/CD 파이프라인을 설정하는 방법을 이해하고, 프로젝트에 자동화된 배포 환경을 구축할 수 있을 것입니다.

추가로 GitHub Actions와 연동할 수 있는 다양한 서비스들을 살펴보고, 프로젝트에 맞는 워크플로우를 확장해 나가세요!


키워드:

  • GitHub Actions
  • CI/CD
  • GitHub Actions 워크플로우
  • GitHub Secrets
  • AWS 배포
  • Docker 이미지
  • 자동화된 테스트

관련 링크:

이 글은 GitHub Actions로 CI/CD를 구성하려는 개발자를 위한 입문 가이드입니다.

반응형