“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
핵심 요소
| 요소 | 설명 |
|---|---|
name | GitHub에 표시된 워크플로 이름 |
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/에 놓기만 하면 됩니다. 간단한 “푸시 시 테스트 실행” 워크플로로 시작한 다음 점차적으로 매트릭스 빌드, 캐싱 및 자동화된 배포를 살펴보세요.

