CI/CD 개념 및 GitHub Actions를 활용한 자동 배포 설정
이번 강의에서는 **CI/CD(Continuous Integration/Continuous Deployment)**의 개념을 설명하고, 이를 GitHub Actions를 사용해 자동 배포 환경을 설정하는 방법을 다룹니다. CI/CD는 개발의 자동화된 과정으로, 코드 변경 사항이 즉각적으로 테스트되고, 문제없이 통과될 경우 자동으로 배포되는 시스템을 의미합니다.
1. CI/CD 개념 설명
1.1 CI(Continuous Integration, 지속적 통합)
**지속적 통합(CI)**는 개발자가 코드를 변경할 때마다 자동으로 빌드 및 테스트를 수행하는 과정입니다. 개발자들은 코드를 자주 통합하고, 각 통합이 올바르게 동작하는지 확인하기 위해 자동화된 테스트를 실행합니다. CI의 주요 목표는 코드 충돌을 최소화하고, 통합 문제를 조기에 발견하는 것입니다.
1.2 CD(Continuous Deployment, 지속적 배포)
**지속적 배포(CD)**는 코드가 통합되고 테스트를 통과하면, 자동으로 프로덕션 환경에 배포되는 과정입니다. 이를 통해 새로운 기능이 사용자에게 빠르게 제공될 수 있습니다. 지속적 배포는 수동 배포 과정에서 발생하는 실수를 줄이고, 소프트웨어의 업데이트를 원활하게 진행할 수 있게 해줍니다.
1.3 CI/CD의 장점
- 자동화된 빌드 및 테스트: 코드 변경 후 테스트가 자동으로 실행되어 오류를 즉시 확인할 수 있습니다.
- 빠른 배포: 자동화된 배포 프로세스를 통해 새로운 기능을 신속하게 릴리스할 수 있습니다.
- 높은 코드 품질: 지속적인 테스트와 통합 덕분에 코드 품질이 향상됩니다.
2. GitHub Actions를 활용한 자동 배포 설정
2.1 GitHub Actions란?
GitHub Actions는 GitHub에서 제공하는 CI/CD 도구로, 리포지토리 내에서 자동화된 워크플로우를 생성하고 관리할 수 있습니다. 이를 통해 코드가 푸시될 때 자동으로 빌드, 테스트, 배포 과정을 실행할 수 있습니다.
2.2 기본 설정
- .github/workflows 디렉토리를 생성한 후, workflow 파일을 추가합니다. 이 파일은 GitHub Actions에서 실행될 워크플로우를 정의합니다.
mkdir -p .github/workflows
- Node.js 프로젝트의 자동 배포 워크플로우 파일을 생성합니다. 예를 들어, 다음과 같은 ci.yml 파일을 작성할 수 있습니다.
# .github/workflows/ci.yml
name: Node.js CI/CD
on:
push:
branches:
- main
jobs:
build:
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
- name: Build project
run: npm run build
- name: Deploy to production
env:
SERVER: ${{ secrets.SERVER }}
USERNAME: ${{ secrets.USERNAME }}
PASSWORD: ${{ secrets.PASSWORD }}
run: |
scp -r ./build $USERNAME@$SERVER:/var/www/html
2.3 워크플로우 파일 설명
- on: push: main 브랜치에 푸시될 때 워크플로우가 실행됩니다.
- jobs: 이 섹션에서는 빌드, 테스트, 배포 단계를 정의합니다.
- Checkout code: 코드베이스를 체크아웃합니다.
- Set up Node.js: Node.js 환경을 설정합니다.
- Install dependencies: 애플리케이션 의존성을 설치합니다.
- Run tests: 정의된 테스트를 실행합니다.
- Build project: 프로젝트를 빌드합니다.
- Deploy to production: 배포 서버로 빌드된 파일을 전송합니다.
2.4 GitHub Secrets 설정
GitHub Secrets는 보안 정보(서버 정보, 비밀번호 등)를 안전하게 저장할 수 있는 기능입니다. 배포 시 사용되는 환경 변수나 인증 정보를 Secrets에 저장하고, 워크플로우에서 사용할 수 있습니다.
- GitHub 리포지토리의 Settings 탭으로 이동합니다.
- Secrets 섹션에서 새로운 시크릿을 추가합니다. 예: SERVER, USERNAME, PASSWORD 등.
3. GitHub Actions를 통한 자동화 워크플로우 실행
- 코드 푸시: main 브랜치에 코드를 푸시하면, 정의된 GitHub Actions 워크플로우가 자동으로 실행됩니다.
- 자동 빌드 및 테스트: 코드를 푸시하는 순간 자동으로 빌드와 테스트가 실행됩니다. 문제가 없다면 애플리케이션이 배포 서버로 전송됩니다.
- 워크플로우 실행 결과 확인: GitHub의 Actions 탭에서 각 워크플로우의 실행 결과를 확인할 수 있습니다. 성공 여부와 각 단계의 로그를 확인하여 문제가 발생했을 때 빠르게 수정할 수 있습니다.
4. CI/CD의 Best Practices
- 작고 자주하는 커밋: 코드 변경은 작고 자주하는 것이 좋습니다. 이는 CI/CD 시스템이 효율적으로 동작하도록 돕고, 버그를 빠르게 잡아낼 수 있습니다.
- 테스트 자동화: 빌드가 완료될 때마다 자동으로 모든 테스트가 실행되도록 설정하여 코드 품질을 보장합니다.
- 롤백 전략: 배포 중 문제가 발생할 경우 이전 버전으로 쉽게 되돌릴 수 있는 롤백 전략을 설정합니다.
결론
이번 강의에서는 CI/CD의 개념을 이해하고, GitHub Actions를 활용해 Node.js 프로젝트의 자동 빌드 및 배포를 설정하는 방법을 배웠습니다. CI/CD는 소프트웨어 개발 과정에서 중요한 역할을 하며, 자동화된 테스트와 배포 프로세스를 통해 개발 효율성을 극대화할 수 있습니다.
'React와 Node.js를 사용한 웹 애플리케이션 개발' 카테고리의 다른 글
React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(26) (1) | 2024.09.22 |
---|---|
React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(25) (1) | 2024.09.22 |
React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(22) (1) | 2024.09.22 |
React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(21) (1) | 2024.09.21 |
React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(20) (1) | 2024.09.21 |