GitHub Actions 시작하기
GitHub Actions 시작하기
GitHub Actions 시작하기: CI/CD 파이프라인 구축 가이드
GitHub Actions는 GitHub 저장소에서 CI/CD(Continuous Integration/Continuous Deployment) 파이프라인을 쉽게 설정하고 관리할 수 있는 강력한 도구입니다. 이 블로그 글에서는 GitHub Actions를 사용하여 CI/CD 파이프라인을 구축하는 방법을 단계별로 설명하겠습니다.
1. GitHub Actions 소개
GitHub Actions는 코드를 빌드, 테스트, 배포하는 워크플로우를 자동화할 수 있는 기능을 제공합니다. GitHub 저장소에 push, pull request, issue 등 이벤트가 발생할 때마다 워크플로우를 트리거할 수 있습니다.
2. 기본 용어 이해하기
- 워크플로우(Workflow): 하나 이상의 작업으로 구성된 자동화 프로세스.
- 잡(Job): 워크플로우 내에서 실행되는 개별 단위 작업.
- 스텝(Step): 잡 내에서 실행되는 명령어 또는 액션.
- 액션(Action): 재사용 가능한 커뮤니티 또는 사용자 정의 스크립트.
3. 워크플로우 파일 생성
워크플로우 파일은 .github/workflows
디렉토리에 YAML 형식으로 저장됩니다. 예를 들어, ci.yml
파일을 생성하여 기본적인 CI 설정을 할 수 있습니다.
예제: 간단한 Node.js 프로젝트 CI 설정
name: Node.js CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
설명:
name
: 워크플로우의 이름. 이 이름은 GitHub Actions 인터페이스에서 워크플로우를 식별하는 데 사용됩니다.on
: 워크플로우가 트리거되는 이벤트. 워크플로우를 트리거하는 이벤트를 정의합니다. 이 예제에서는 push와 pull_request 이벤트를 사용하여 워크플로우를 트리거합니다.jobs
: 워크플로우 내에서 실행되는 작업들.runs-on
: 작업이 실행될 환경(예:ubuntu-latest
). 작업이 실행될 환경을 지정합니다. 이 예제에서는 ubuntu-latest를 사용하여 최신 버전의 우분투에서 작업이 실행됩니다.steps
: 작업 내에서 실행되는 단계들. 작업 내에서 실행될 단계(Step)들을 정의합니다. 단계는 순차적으로 실행됩니다.uses
: 특정 액션을 사용하는 단계. GitHub에서 제공하는 액션을 사용합니다.actions/checkout@v2
는 GitHub 저장소를 체크아웃하는 액션입니다.actions/setup-node@v2
는 Node.js를 설정하는 액션입니다.
with
: 액션에 전달할 매개변수를 정의합니다. 여기서는 node-version: ’14’를 사용하여 Node.js 버전 14를 설정합니다.run
: 명령어를 실행하는 단계.
4. 고급 설정
캐싱 사용
반복적인 의존성 설치를 빠르게 하기 위해 캐싱을 사용할 수 있습니다.
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
매트릭스 전략
여러 환경에서 테스트를 실행하기 위해 매트릭스 전략을 사용할 수 있습니다.
매트릭스 전략은 CI/CD 워크플로우에서 여러 가지 설정 조합을 테스트할 때 유용한 기능입니다. 이를 통해 코드가 다양한 환경에서 제대로 작동하는지 확인할 수 있습니다. 매트릭스 전략을 사용하면 여러 버전의 언어, 운영 체제, 그리고 기타 종속성 조합에서 빌드와 테스트를 자동화할 수 있습니다.
매트릭스 전략은 jobs.
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12, 14, 16]
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
배포 설정
CI 파이프라인이 성공하면 자동으로 배포할 수 있습니다.
jobs:
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Deploy to server
run: |
ssh user@your-server 'bash -s' < deploy-script.sh env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
5. GitHub Secrets 사용
배포 시 민감한 정보(예: API 키, 서버 비밀번호)는 GitHub Secrets를 통해 관리할 수 있습니다.
- 저장소 페이지로 이동.
Settings
탭 선택.Secrets
메뉴에서New repository secret
버튼 클릭.- 이름과 값을 입력하고 저장.
마무리
이제 GitHub Actions를 사용하여 간단한 CI/CD 파이프라인을 구축할 수 있게 되었습니다. GitHub Actions는 매우 유연하고 강력한 도구로, 다양한 요구사항에 맞게 확장할 수 있습니다. 더 많은 정보를 원하시면 GitHub Actions 공식 문서를 참고하세요.