GitHub Actions란?
GitHub Actions는 GitHub에서 제공하는 자동화 도구로, 코드 빌드, 테스트, 배포 과정을 자동화할 수 있는 CI/CD(Continuous Integration/Continuous Deployment) 플랫폼입니다. 별도의 서버 구축 없이 GitHub 저장소에서 직접 워크플로우를 설정할 수 있어 개발자들에게 인기가 높습니다.
특히 오픈소스 프로젝트의 경우 무료로 사용할 수 있으며, Private 저장소도 월 2,000분의 무료 실행 시간을 제공합니다.
CI/CD가 필요한 이유
전통적인 개발 방식에서는 코드를 작성한 후 수동으로 테스트하고, 빌드하고, 서버에 배포해야 했습니다. 이 과정은 시간이 오래 걸릴 뿐만 아니라 사람의 실수로 인한 오류 가능성도 높습니다.
CI/CD를 도입하면 다음과 같은 이점을 얻을 수 있습니다:
- 코드 푸시 시 자동으로 테스트가 실행되어 버그를 조기에 발견
- 일관된 빌드 및 배포 프로세스 보장
- 개발자가 코드 작성에 집중할 수 있는 환경 조성
- 배포 주기 단축 및 생산성 향상
GitHub Actions 기본 구조
GitHub Actions는 YAML 파일로 워크플로우를 정의합니다. 저장소의 .github/workflows/ 디렉토리에 YAML 파일을 생성하면 자동으로 인식됩니다.
워크플로우는 다음 요소로 구성됩니다:
- Workflow: 자동화된 전체 프로세스
- Event: 워크플로우를 트리거하는 이벤트 (예: push, pull_request)
- Job: 워크플로우 내에서 실행되는 작업 단위
- Step: Job 안에서 순차적으로 실행되는 개별 작업
- Action: 재사용 가능한 작업 단위
실전 예제: Node.js 프로젝트 CI/CD 구축
Node.js 웹 애플리케이션을 예시로 실제 CI/CD 파이프라인을 구축해보겠습니다. 아래는 코드 푸시 시 자동으로 테스트를 실행하는 기본 워크플로우입니다.
name: CI/CD Pipeline
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: 코드 체크아웃
uses: actions/checkout@v3
- name: Node.js 설정
uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'npm'
- name: 의존성 설치
run: npm ci
- name: 테스트 실행
run: npm test
- name: 빌드
run: npm run build
deploy:
needs: test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- name: 배포 스크립트 실행
run: echo "배포 진행"
워크플로우 설명
위 예제는 두 개의 Job으로 구성되어 있습니다. test Job은 main과 develop 브랜치에 푸시되거나 main 브랜치로 PR이 생성될 때 실행됩니다. 코드를 체크아웃하고, Node.js 환경을 설정한 후, 의존성을 설치하고 테스트를 실행합니다.
deploy Job은 test Job이 성공적으로 완료된 후(needs: test) main 브랜치에서만 실행됩니다. 실제 프로젝트에서는 AWS, Azure, Vercel 등 원하는 플랫폼으로 배포하는 스크립트를 추가하면 됩니다.
시크릿 관리하기
배포 과정에서는 API 키, 데이터베이스 비밀번호 등 민감한 정보가 필요합니다. 이러한 정보는 코드에 직접 작성하면 안 되며, GitHub Secrets를 활용해야 합니다.
저장소 Settings > Secrets and variables > Actions에서 시크릿을 추가한 후, 워크플로우에서 ${{ secrets.SECRET_NAME }} 형태로 참조할 수 있습니다.
핵심 요약
GitHub Actions를 활용하면 별도의 CI/CD 서버 없이도 자동화된 개발 워크플로우를 구축할 수 있습니다. .github/workflows/ 디렉토리에 YAML 파일을 작성하여 테스트, 빌드, 배포 과정을 자동화하고, GitHub Secrets로 민감한 정보를 안전하게 관리하세요. 처음에는 간단한 테스트 자동화부터 시작하여 점진적으로 배포 자동화까지 확장해나가는 것을 추천합니다.
Did you find this helpful?
☕ Buy me a coffee
Leave a Reply