GitHub Actions
CI/CD를 간단히 구현할 수 있도록 이벤트 기반으로 워크플로우를 자동화하는 도구
CI (Continuous Integration) 지속적 통합
지속적 통합은 개발자가 작업한 코드를 정기적으로 중앙 저장소(Git)에 병합하고, 병합된 코드에 대해 자동으로 빌드와 테스트를 수행하는 과정
CD (Continuous Deployment/Delivery) 지속적 배포/전달
- 지속적 전달(Continuous Delivery): 코드를 자동으로 테스트하고 준비 상태로 유지하여, 배포를 수동으로 승인
- 지속적 배포(Continuous Deployment): 코드 변경 사항이 테스트를 통과하면, 프로덕션 환경까지 자동으로 배포
코드 푸시 시 빌드, 테스트, 배포
name: CI/CD Pipeline
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Install Dependencies
run: npm install
- name: Run Tests
run: npm test
원격 서버 배포
- name: Configure SSH
uses: webfactory/ssh-agent@v0.5.3
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Deploy Application
run: |
ssh -o StrictHostKeyChecking=no user@server-ip << 'EOF'
cd /path/to/app
docker-compose up -d
EOF
Docker 상태 확인
- name: Check Docker Status
run: |
ssh -o StrictHostKeyChecking=no user@server-ip << 'EOF'
docker ps
EOF
Docker 이미지 빌드 및 푸시
yaml
코드 복사
- name: Build and Push Docker Image
run: |
docker build -t your-image-name .
docker push your-docker-repo/your-image-name:latest
Health Check
- name: Check Application Health
run: curl -f http://your-app-domain/health || exit 1