CI/CD를 위한 GitHub Actions 활용법
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
CI/CD(지속적 통합 및 지속적 배포)는 소프트웨어 개발에서 자동화된 빌드, 테스트, 배포 프로세스를 통해 코드 변경을 빠르고 안정적으로 운영 환경에 반영할 수 있게 해주는 필수 요소입니다. GitHub Actions는 이러한 CI/CD 파이프라인을 간편하게 설정하고 관리할 수 있는 GitHub의 내장 도구입니다. 이 글에서는 GitHub Actions의 기본 개념과 CI/CD 파이프라인 구축에 필요한 설정 및 활용법을 자세히 설명하겠습니다.
GitHub Actions의 기본 개념
GitHub Actions는 GitHub 리포지토리에서 자동화된 작업(Workflow)을 실행할 수 있는 도구입니다. 워크플로우는 다양한 이벤트(예: 코드 푸시, PR 생성 등)에 따라 트리거되며, 특정 작업(Job)과 단계(Step)를 통해 일련의 작업을 자동으로 수행합니다.
주요 개념
- 워크플로우(Workflow): 하나 이상의 작업을 포함하는 자동화 프로세스입니다.
.github/workflows/
디렉터리에 YAML 파일로 정의됩니다. - 잡(Job): 워크플로우 내에서 실행되는 작업의 단위입니다. 각 잡은 별도의 실행 환경에서 병렬 또는 순차적으로 실행될 수 있습니다.
- 스텝(Step): 각 잡 내에서 순차적으로 실행되는 개별 명령 또는 스크립트입니다.
- 러너(Runner): 잡을 실행하는 환경입니다. GitHub는 호스팅 러너와 셀프 호스팅 러너를 제공합니다.
GitHub Actions을 활용한 CI/CD 파이프라인 설정
1. CI 설정: 코드 빌드와 테스트 자동화
워크플로우 파일을 생성하여 코드가 푸시될 때마다 자동으로 빌드하고 테스트하는 파이프라인을 설정할 수 있습니다.
예시:
name: CI Pipeline
on: [push]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
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
설명:
on: [push]
: 코드가 리포지토리에 푸시될 때 워크플로우가 실행됩니다.jobs.build-and-test
: 빌드 및 테스트 작업을 정의합니다.steps
: 코드 체크아웃, Node.js 설정, 의존성 설치, 테스트 실행 등의 단계를 포함합니다.
2. CD 설정: 자동화된 배포
코드가 성공적으로 빌드되고 테스트되면, 배포 작업을 추가하여 자동으로 운영 환경에 배포할 수 있습니다.
예시:
name: CD Pipeline
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Deploy to production
run: |
ssh user@server "cd /var/www/myapp && git pull origin main && npm install && npm run build"
설명:
on.push.branches: - main
:main
브랜치에 푸시가 발생할 때 워크플로우가 실행됩니다.steps
: 서버에 SSH로 연결하여 최신 코드를 가져오고, 의존성을 설치하며, 빌드를 실행하는 배포 단계입니다.
3. 워크플로우 조건 및 시크릿 관리
특정 조건에 따라 작업을 실행하거나 시크릿을 사용하여 민감한 정보를 보호할 수 있습니다.
조건부 실행:
- name: Run tests only on feature branches
if: startsWith(github.ref, 'refs/heads/feature/')
run: npm test
시크릿 사용:
- name: Deploy to production
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
run: |
echo "$SSH_PRIVATE_KEY" | ssh-add -
ssh user@server "cd /var/www/myapp && git pull origin main && npm install && npm run build"
4. 멀티 플랫폼 테스트
여러 운영 체제에서 동시에 테스트를 실행하여 다양한 환경에서의 호환성을 보장할 수 있습니다.
예시:
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- run: npm install
- run: npm test
GitHub Actions 활용의 이점
- 통합된 환경: GitHub 리포지토리와 직접 통합되어 CI/CD 파이프라인 설정이 간편합니다.
- 자동화된 워크플로우: 코드 푸시, PR 생성, 릴리스 태그 등 다양한 이벤트에 따라 자동화된 워크플로우를 설정할 수 있습니다.
- 확장성: GitHub Actions 마켓플레이스를 통해 다양한 액션을 추가하여 파이프라인을 확장할 수 있습니다.
- 보안 관리: 시크릿 관리와 같은 기능을 통해 민감한 데이터를 안전하게 관리할 수 있습니다.
결론
GitHub Actions는 CI/CD 파이프라인을 구축하고 관리하기 위한 강력하고 유연한 도구입니다. 이 도구를 활용하면 코드 품질을 유지하면서 신속하고 안전하게 소프트웨어를 배포할 수 있습니다. GitHub Actions를 적절히 활용하여, 자동화된 개발 및 배포 프로세스를 구현함으로써 개발 속도를 높이고, 운영 효율성을 극대화할 수 있습니다.
- 공유 링크 만들기
- X
- 이메일
- 기타 앱