CI/CD

김현준·2024년 7월 13일

협업

목록 보기
2/8

CI/CD는 지속적인 통합(Continuous Integration)과 지속적인 배포(Continuous Delivery 또는 Continuous Deployment)를 의미한다. 이는 소프트웨어 개발과 배포 과정에서 품질을 높이고 효율성을 극대화하기 위한 방법론이다.

지속적인 통합 (CI: Continuous Integration)

1. 코드 통합:

  • 개발자들은 각자 기능을 개발하고, 이를 버전 관리 시스템(예: Git)에 자주 병합한다.
  • 병합할 때마다 자동화된 빌드와 테스트가 실행되어 코드가 제대로 작동하는지 확인한다.

2. 자동화된 테스트:

  • 코드가 병합될 때마다 자동으로 유닛 테스트, 통합 테스트 등이 실행된다.
  • 이를 통해 코드의 품질을 유지하고, 오류를 빠르게 발견할 수 있다.

3. 빌드 자동화:

  • 코드가 병합되면 자동으로 빌드 시스템이 작동하여 애플리케이션을 빌드한다.
  • 빌드가 실패하면 즉시 알림을 받아 수정할 수 있다.

지속적인 배포 (CD: Continuous Delivery/Continuous Deployment)

1. 지속적인 배포 (Continuous Delivery):

  • CI 과정이 완료된 후, 자동화된 배포 준비 단계가 진행된다.
  • 이 단계에서는 배포 가능한 상태의 애플리케이션이 준비되지만, 실제 배포는 사람이 최종 확인 후에 진행된다.
  • 이를 통해 언제든지 안정된 상태의 애플리케이션을 배포할 수 있는 준비가 된다.

2. 지속적인 배포 (Continuous Deployment):

  • Continuous Delivery 단계에서 한 발 더 나아가, 준비된 애플리케이션이 자동으로 프로덕션 환경에 배포된다.
  • 즉, 사람이 개입하지 않고도 자동으로 배포가 이루어진다.

CI/CD의 이점

1. 빠른 피드백:
코드 병합과 테스트가 자동으로 이루어지므로, 문제를 빠르게 발견하고 수정할 수 있다.

2. 높은 품질 유지:
자동화된 테스트와 빌드를 통해 코드의 품질을 유지할 수 있다.

3. 효율성:
수작업 배포의 번거로움을 줄이고, 배포 과정에서 발생할 수 있는 실수를 최소화할 수 있다.

CI/CD 도구

1. Jenkins:
오픈 소스 자동화 서버로, 다양한 플러그인을 통해 CI/CD 파이프라인을 구성할 수 있다.

2. GitHub Actions:
GitHub 리포지토리와 통합되어 워크플로우를 정의하고, CI/CD 파이프라인을 쉽게 구성할 수 있다.

3. GitLab CI/CD:
GitLab과 통합된 CI/CD 도구로, 프로젝트와 밀접하게 연동하여 파이프라인을 관리할 수 있다.

4. CircleCI:
설정이 간편하고, 빠른 빌드와 배포를 지원하는 CI/CD 서비스이다.

예시

React 프로젝트의 경우, GitHub Actions를 사용하여 CI/CD 파이프라인을 구성할 수 있다. 예를 들어, 다음과 같은 워크플로우 파일을 사용할 수 있다

name: CI/CD Pipeline

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 GitHub Pages
      if: github.ref == 'refs/heads/main'
      run: |
        npm install -g gh-pages
        npm run deploy

위 예시는 코드를 푸시할 때마다 테스트와 빌드를 실행하고, main 브랜치에 푸시된 경우 GitHub Pages에 배포하는 과정을 자동화한 것이다.

이와 같이 CI/CD는 개발과 배포 과정을 자동화하여 개발자들이 더욱 효율적으로 작업할 수 있도록 도와준다.

profile
기록하자

0개의 댓글