소프트웨어 활용법

깃허브(GitHub) 액션을 활용한 CI/CD 자동화 초보 가이드

slowri 2025. 1. 19. 09:00

GitHub Actions는 소프트웨어 개발 라이프사이클을 자동화하는 강력한 도구입니다. CI/CD(Continuous Integration/Continuous Deployment) 파이프라인을 설정하여 코드 품질을 유지하고 배포 과정을 효율화할 수 있습니다. 이 글에서는 GitHub Actions를 활용해 CI/CD 자동화를 시작하는 방법을 단계별로 설명합니다.


1. GitHub Actions란 무엇인가?

GitHub Actions는 GitHub의 레포지토리에서 자동화된 작업(workflows)을 실행할 수 있는 기능입니다.

  • 주요 특징:
    • 코드를 푸시(push)하거나 PR(Pull Request)을 생성할 때 자동으로 테스트, 빌드, 배포 작업을 실행.
    • YAML 형식의 설정 파일로 유연한 워크플로우 작성 가능.
    • GitHub Marketplace에서 다양한 액션(Action)을 설치하여 손쉽게 기능 확장.
  • CI/CD란?
    • CI(Continuous Integration): 개발자가 작성한 코드를 지속적으로 병합하고 테스트하여 코드 품질을 유지.
    • CD(Continuous Deployment): 검증된 코드를 자동으로 배포하는 과정.

GitHub Actions는 CI/CD의 모든 과정을 지원하며, 설정과 사용이 간단합니다.


2. GitHub Actions 워크플로우 설정하기

GitHub Actions를 설정하려면 다음 단계를 따라야 합니다.

1) 기본 설정

  1. 레포지토리의 루트 디렉토리에 .github/workflows 폴더를 생성합니다.
  2. 이 폴더에 YAML 형식의 워크플로우 파일을 추가합니다.

2) 워크플로우 파일 작성 예시
아래는 간단한 Node.js 프로젝트의 CI 워크플로우 예제입니다:

name: Node.js CI

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

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

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

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm test
  • 설명:
    • on: 워크플로우가 트리거되는 조건을 설정합니다. 여기서는 push와 pull_request 이벤트에 반응합니다.
    • jobs: 실행할 작업(Job)을 정의합니다.
    • steps: 각 작업 안에서 실행할 단계를 순차적으로 작성합니다.

3. GitHub Actions로 CI/CD 파이프라인 만들기

GitHub Actions를 사용하여 CI/CD를 구현하면 코드 작성부터 배포까지 모든 과정을 자동화할 수 있습니다.

1) CI 파이프라인

  • 코드 품질을 유지하기 위해 다음 단계를 포함할 수 있습니다:
    1. 코드 체크아웃 및 의존성 설치.
    2. 정적 분석 도구 실행(예: ESLint, Prettier).
    3. 테스트 실행(Jest, Mocha 등).
    4. 빌드 생성.

2) CD 파이프라인

  • 애플리케이션을 자동 배포하려면 아래 단계를 추가하세요:
    • 클라우드 플랫폼(AWS, Azure, Google Cloud) 또는 컨테이너 플랫폼(Docker, Kubernetes)과 통합.
    • 예제: AWS S3로 정적 웹사이트 배포
      - name: Deploy to S3
        uses: aws-actions/configure-aws-credentials@v3
        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: Upload to S3
        run: aws s3 sync ./build s3://your-bucket-name --delete
      

3) 시크릿 관리

  • GitHub Secrets를 사용하여 민감한 정보를 보호하세요.
    • 설정 위치: GitHub 레포지토리 > Settings > Secrets and variables > Actions.
    • 예: AWS 액세스 키, API 토큰 등을 안전하게 저장.

4. 실전 팁과 추가 리소스

1) 실전 팁

  • 병렬 실행 활용: 여러 작업을 병렬로 실행해 시간을 절약하세요.
    jobs:
      build-and-test:
        strategy:
          matrix:
            node-version: [14, 16, 18]
    
  • 캐싱 사용: 의존성을 캐싱하여 빌드 시간을 단축하세요.
    - name: Cache Node modules
      uses: actions/cache@v3
      with:
        path: ~/.npm
        key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
        restore-keys: |
          ${{ runner.os }}-node-
    

2) 추가 리소스


결론

GitHub Actions는 CI/CD 자동화를 쉽게 구현할 수 있는 도구로, 개발 워크플로우를 효율적으로 관리할 수 있습니다. 기본적인 워크플로우 설정부터 고급 기능까지 단계적으로 활용하며 프로젝트의 생산성과 코드 품질을 향상시킬 수 있습니다. 이제 GitHub Actions를 활용해 자동화된 개발 환경을 구축해 보세요!