코드를 push할 때마다 자동으로 테스트를 돌리고, 리뷰가 통과되면 배포까지 이어지는 흐름. GitHub Actions는 그 흐름을 별도 서버 없이 yaml 파일 하나로 구현합니다. 13년간 다양한 CI 도구를 써온 입장에서, GitHub Actions는 “설정 비용 대비 커버리지"가 가장 높은 도구입니다. Jenkins처럼 전용 서버가 필요 없고, CircleCI처럼 별도 계정을 관리할 필요도 없습니다. 리포지토리에 .github/workflows/ 디렉토리만 있으면 시작됩니다.
GitHub Actions는 GitHub 리포지토리에서 직접 동작하는 자동화 플랫폼입니다. 코드 push, PR 생성, 스케줄, 외부 이벤트 등 다양한 트리거에 반응해서 정해진 작업을 실행합니다. 공식 Marketplace에 15,000개 이상의 Action이 등록되어 있어, 직접 스크립트를 짜지 않아도 대부분의 작업을 조합할 수 있습니다.
핵심 개념을 먼저 정리하면 다음과 같습니다.
Workflow: .github/workflows/*.yml 파일. 자동화의 최상위 단위
Event: workflow를 실행시키는 트리거 (push, pull_request, schedule 등)
Job: 독립적으로 실행되는 작업 단위. 기본적으로 병렬 실행
Step: Job 안의 개별 명령. 순차 실행
Action: 재사용 가능한 Step 단위 패키지 (uses: actions/checkout@v4)
# .github/workflows/ci.ymlname:CIon:push:branches:[main, develop]pull_request:branches:[main]jobs:build:runs-on:ubuntu-lateststeps:- name:코드 체크아웃uses:actions/checkout@v4- name:Node.js 설정uses:actions/setup-node@v4with:node-version:'20'cache:'npm'- name:의존성 설치run:npm ci- name:빌드run:npm run build- name:테스트run:npm test
on 섹션이 트리거입니다. main과 develop 브랜치에 push가 되거나, main 브랜치로 PR이 생성될 때 실행됩니다. runs-on: ubuntu-latest는 GitHub에서 제공하는 Ubuntu 가상 머신을 사용한다는 의미입니다. 매 실행마다 새로운 환경이 생성되므로 이전 실행의 오염 걱정이 없습니다.
Environment Secrets로 배포 환경별 값을 분리하는 것도 중요합니다. Settings → Environments에서 staging과 production 환경을 만들고, 각 환경별로 다른 Secrets를 등록합니다. production 환경에는 “Required reviewers"를 설정해서 배포 전 승인 과정을 강제할 수 있습니다.
매번 npm install을 처음부터 실행하면 시간이 많이 걸립니다. actions/cache를 사용하면 node_modules를 캐시해서 빌드 시간을 크게 단축할 수 있습니다. actions/setup-node@v4는 cache: 'npm' 옵션을 지원해서 별도로 cache Action을 쓰지 않아도 됩니다.
1
2
3
4
- uses:actions/setup-node@v4with:node-version:'20'cache:'npm'# package-lock.json 해시 기반 캐시 자동 처리
on:schedule:- cron:'0 9 * * 1-5'# 평일 오전 9시 (UTC 기준 0시)workflow_dispatch:# 수동 실행 버튼 활성화inputs:environment:description:'배포 환경'required:truedefault:'staging'type:choiceoptions:[staging, production]
workflow_dispatch를 추가하면 GitHub UI에서 “Run workflow” 버튼이 생깁니다. inputs로 매개변수를 받을 수 있어서, 긴급 재배포나 특정 환경 선택이 필요한 상황에 유용합니다.
GitHub Actions는 공개 리포지토리에서 무제한 무료입니다. 비공개 리포지토리는 계정 플랜에 따라 월 2,000~50,000분의 무료 사용량이 있습니다. Ubuntu runner 기준으로 분당 약 $0.008입니다. 캐시를 잘 활용하고 불필요한 Job을 줄이면 비용을 크게 낮출 수 있습니다.
실무에서 GitHub Actions를 도입할 때 가장 먼저 챙겨야 할 것은 “PR마다 테스트가 자동으로 돌고, main 브랜치는 항상 배포 가능한 상태"라는 기준선입니다. 복잡한 파이프라인보다 이 기준선이 먼저입니다. 기준선이 잡히면 Matrix, 캐시 최적화, 환경 분리는 필요에 따라 하나씩 추가하면 됩니다.