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로 민감한 정보를 안전하게 관리하세요. 처음에는 간단한 테스트 자동화부터 시작하여 점진적으로 배포 자동화까지 확장해나가는 것을 추천합니다.
이 글이 도움이 되셨나요? ☕
Buy me a coffee
답글 남기기