React와 Node.js를 사용한 웹 애플리케이션 개발

React와 Node.js를 사용한 웹 애플리케이션(게시판) 개발 강좌(24)

atomicdev 2024. 9. 22. 17:38
728x90

CI/CD 개념 및 GitHub Actions를 활용한 자동 배포 설정

이번 강의에서는 **CI/CD(Continuous Integration/Continuous Deployment)**의 개념을 설명하고, 이를 GitHub Actions를 사용해 자동 배포 환경을 설정하는 방법을 다룹니다. CI/CD는 개발의 자동화된 과정으로, 코드 변경 사항이 즉각적으로 테스트되고, 문제없이 통과될 경우 자동으로 배포되는 시스템을 의미합니다.

CI/CD 개념과 GitHub Actions 를 사용한 자동화 과정


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 기본 설정

  1. .github/workflows 디렉토리를 생성한 후, workflow 파일을 추가합니다. 이 파일은 GitHub Actions에서 실행될 워크플로우를 정의합니다.
mkdir -p .github/workflows
  1. 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에 저장하고, 워크플로우에서 사용할 수 있습니다.

  1. GitHub 리포지토리의 Settings 탭으로 이동합니다.
  2. Secrets 섹션에서 새로운 시크릿을 추가합니다. 예: SERVER, USERNAME, PASSWORD 등.

3. GitHub Actions를 통한 자동화 워크플로우 실행

  1. 코드 푸시: main 브랜치에 코드를 푸시하면, 정의된 GitHub Actions 워크플로우가 자동으로 실행됩니다.
  2. 자동 빌드 및 테스트: 코드를 푸시하는 순간 자동으로 빌드와 테스트가 실행됩니다. 문제가 없다면 애플리케이션이 배포 서버로 전송됩니다.
  3. 워크플로우 실행 결과 확인: GitHub의 Actions 탭에서 각 워크플로우의 실행 결과를 확인할 수 있습니다. 성공 여부와 각 단계의 로그를 확인하여 문제가 발생했을 때 빠르게 수정할 수 있습니다.

4. CI/CD의 Best Practices

  1. 작고 자주하는 커밋: 코드 변경은 작고 자주하는 것이 좋습니다. 이는 CI/CD 시스템이 효율적으로 동작하도록 돕고, 버그를 빠르게 잡아낼 수 있습니다.
  2. 테스트 자동화: 빌드가 완료될 때마다 자동으로 모든 테스트가 실행되도록 설정하여 코드 품질을 보장합니다.
  3. 롤백 전략: 배포 중 문제가 발생할 경우 이전 버전으로 쉽게 되돌릴 수 있는 롤백 전략을 설정합니다.

결론

이번 강의에서는 CI/CD의 개념을 이해하고, GitHub Actions를 활용해 Node.js 프로젝트의 자동 빌드 및 배포를 설정하는 방법을 배웠습니다. CI/CD는 소프트웨어 개발 과정에서 중요한 역할을 하며, 자동화된 테스트와 배포 프로세스를 통해 개발 효율성을 극대화할 수 있습니다.

728x90