Featured image of post GitHub Actions를 사용하여 CI/CD 시작하기Featured image of post GitHub Actions를 사용하여 CI/CD 시작하기

GitHub Actions를 사용하여 CI/CD 시작하기

GitHub Actions가 포함된 CI/CD에 대한 초보자 친화적인 가이드로, 첫 번째 자동화 설정의 필수 사항을 다룹니다.

“CI/CD"가 알아야 할 내용처럼 들리지만 어디서부터 시작해야 할지 모르겠다면 이 가이드가 도움이 될 것입니다. GitHub Actions는 GitHub 저장소를 통해 모든 사람이 지속적으로 통합하고 제공할 수 있도록 해줍니다.

GitHub 액션이란 무엇인가요?

GitHub Actions는 GitHub에 직접 내장된 CI/CD 플랫폼입니다. 이를 통해 리포지토리에서 바로 테스트, 구축 및 배포를 자동화할 수 있습니다. 워크플로는 푸시, 풀 요청 또는 예약된 이벤트에 대해 트리거됩니다.

1. 작업 흐름 기본

워크플로를 정의하려면 .github/workflows/ 안에 YAML 파일을 배치하세요.

.github/
└── workflows/
    └── ci.yml

기본 구조는 다음과 같습니다.

name: CI

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

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npm test

핵심 요소

요소설명
nameGitHub에 표시된 워크플로 이름
on트리거 이벤트(push, pull_request, 일정 등)
jobs병렬로 실행할 수 있는 작업 모음
runs-on러너 환경(ubuntu-latest, windows-latest, macos-latest)
steps작업 내 개별 작업
uses기존 작업 재사용
run쉘 명령 직접 실행

2. 트리거 변형

# On push
on: push

# On pull request
on: pull_request

# Scheduled (cron)
on:
  schedule:
    - cron: '0 9 * * 1'  # Every Monday at 9:00 UTC

# Manual trigger
on:
  workflow_dispatch:

3. 마켓플레이스 작업 사용

GitHub Marketplace에서는 수천 가지 작업을 사용할 수 있습니다. 가장 일반적인 것은 다음과 같습니다.

- uses: actions/checkout@v4          # Checkout repository
- uses: actions/setup-node@v4        # Setup Node.js
- uses: actions/setup-python@v5      # Setup Python
- uses: docker/login-action@v3       # Login to Docker registry
- uses: actions/cache@v4             # Cache dependencies
- uses: actions/upload-artifact@v4   # Upload build artifacts

4. 병렬 테스트를 위한 매트릭스 빌드

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [18, 20, 22]
        os: [ubuntu-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm ci
      - run: npm test

자동으로 실행되는 6가지 조합입니다.

5. 비밀 및 환경 변수

GitHub의 설정 → 비밀 및 변수 → 작업에 API 키와 비밀번호를 저장하세요.

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: deploy.sh
        env:
          API_KEY: ${{ secrets.API_KEY }}
          DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}

절대로 YAML 파일에 직접 비밀을 쓰지 마세요.

6. 캐싱 종속성

node_modules 또는 ~/.npm을 캐싱하면 작업 흐름 속도가 크게 향상될 수 있습니다.

- name: Cache Node Modules
  uses: actions/cache@v4
  with:
    path: ~/.npm
    key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
    restore-keys: |
      ${{ runner.os }}-node-

7. 배포 예시(GitHub 페이지)

name: Deploy to GitHub Pages

on:
  push:
    branches: [main]

permissions:
  contents: read
  pages: write
  id-token: write

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npm run build
      - uses: actions/configure-pages@v4
      - uses: actions/upload-pages-artifact@v3
        with:
          path: ./out
      - uses: actions/deploy-pages@v4

요약

GitHub Actions는 시작하기 가장 쉬운 CI/CD 도구 중 하나입니다. YAML 파일을 .github/workflows/에 놓기만 하면 됩니다. 간단한 “푸시 시 테스트 실행” 워크플로로 시작한 다음 점차적으로 매트릭스 빌드, 캐싱 및 자동화된 배포를 살펴보세요.