티스토리 뷰

반응형

웹 개발 실무 기술 A to Z

웹 애플리케이션 개발에서 코드 변경을 빠르게 배포하고 자동화하는 것은 필수적인 요소입니다.
✔️ CI(Continuous Integration, 지속적 통합) → 코드 변경 사항을 자동으로 빌드 및 테스트
✔️ CD(Continuous Deployment, 지속적 배포) → 검증된 코드가 자동으로 프로덕션 환경에 배포

이번 글에서는 GitHub Actions, Jenkins, GitLab CI/CD를 활용하여 CI/CD 파이프라인을 구축하는 방법을 알아보겠습니다.


1. CI/CD란?

1-1. CI/CD 개념

개념 설명

CI (지속적 통합) 코드 변경이 발생하면 자동으로 빌드 & 테스트 수행
CD (지속적 배포) 새로운 코드가 테스트를 통과하면 자동으로 운영 환경에 배포
CD (지속적 전달) 자동 배포는 하지 않지만, 프로덕션 배포 준비 완료 상태 유지

CI/CD를 도입하면 개발 속도가 빨라지고, 배포 과정이 자동화됨!


2. GitHub Actions – CI/CD 자동화 구축

GitHub Actions는 GitHub 저장소에서 CI/CD를 자동화하는 도구입니다.
✔️ 코드 푸시(Push) 또는 PR 생성 시 자동 실행 가능
✔️ Docker, AWS, Firebase 등과 쉽게 연동 가능
✔️ 무료 플랜에서도 2,000분의 실행 시간 제공

2-1. GitHub Actions 설정

(1) .github/workflows/deploy.yml 파일 생성

name: Deploy Node.js App

on:
  push:
    branches:
      - main

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2

      - name: Set up Node.js
        uses: actions/setup-node@v16
        with:
          node-version: 16

      - name: Install Dependencies
        run: npm install

      - name: Run Tests
        run: npm test

      - name: Deploy to Production
        run: |
          ssh user@yourserver.com "cd /app && git pull origin main && npm install && pm2 restart app"

GitHub Actions를 활용하면 코드 푸시 시 자동으로 빌드 & 배포 가능!


3. Jenkins – 온프레미스(자체 서버)에서 CI/CD 구축

Jenkins는 CI/CD 자동화 서버로, 빌드, 테스트, 배포를 자동화하는 오픈소스 도구입니다.
✔️ 온프레미스 환경에서 사용 가능
✔️ 커스텀 스크립트 및 플러그인 지원
✔️ GitHub, Docker, AWS와 쉽게 연동 가능

3-1. Jenkins 설치 및 실행

(1) Jenkins 설치 (Docker 사용)

docker run -p 8080:8080 --name jenkins -d jenkins/jenkins:lts

(2) Jenkins 초기 설정

  1. http://localhost:8080 접속
  2. 기본 관리자 비밀번호 입력 (docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword)
  3. 추천 플러그인 설치
  4. GitHub, Node.js, Docker 플러그인 추가

3-2. Jenkins 파이프라인 설정

(1) Jenkinsfile 작성

pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                git 'https://github.com/your-repo.git'
            }
        }
        stage('Build') {
            steps {
                sh 'npm install'
            }
        }
        stage('Test') {
            steps {
                sh 'npm test'
            }
        }
        stage('Deploy') {
            steps {
                sshagent(['deploy-key']) {
                    sh 'ssh user@yourserver.com "cd /app && git pull && pm2 restart app"'
                }
            }
        }
    }
}

(2) Jenkins에서 파이프라인 실행

  1. Jenkins > New Item > Pipeline 선택
  2. Pipeline Script Path → Jenkinsfile 설정
  3. Build Now 클릭하여 CI/CD 실행

Jenkins를 활용하면 서버 내에서 CI/CD를 유연하게 관리 가능!


4. GitLab CI/CD – GitLab을 활용한 자동 배포

GitLab CI/CD는 GitLab 저장소 내에서 CI/CD를 자동화하는 기능을 제공합니다.
✔️ GitLab Runner를 활용하여 빌드 & 테스트 수행
✔️ Docker 컨테이너에서 실행 가능
✔️ AWS, Kubernetes 배포 연동 가능

4-1. GitLab CI/CD 설정

(1) .gitlab-ci.yml 파일 생성

stages:
  - build
  - test
  - deploy

build:
  stage: build
  script:
    - npm install

test:
  stage: test
  script:
    - npm test

deploy:
  stage: deploy
  only:
    - main
  script:
    - ssh user@yourserver.com "cd /app && git pull && npm install && pm2 restart app"

(2) GitLab에서 CI/CD 실행

  1. GitLab 저장소에서 CI/CD 설정 활성화
  2. .gitlab-ci.yml이 있는 상태에서 푸시하면 자동 실행
  3. GitLab > CI/CD > Pipelines에서 실행 상태 확인

GitLab CI/CD를 활용하면 GitHub Actions처럼 자동 배포 가능!


5. CI/CD 도구 비교

도구 주요 특징 사용 사례

GitHub Actions GitHub와 완벽한 통합, 설정 간단 GitHub에서 자동 배포 설정
Jenkins 온프레미스 및 고급 커스텀 가능 기업 내부 CI/CD 구축
GitLab CI/CD GitLab과 연동, Docker 지원 GitLab에서 자동 배포 관리

GitHub Actions는 GitHub 프로젝트에서 간편한 CI/CD 적용에 적합!
Jenkins는 사내 서버를 활용한 온프레미스 환경에서 강력한 CI/CD 지원!
GitLab CI/CD는 GitLab 환경에서 완전 자동 배포를 지원!


6. 마무리 및 다음 글 예고

이번 글에서는 CI/CD의 개념과 GitHub Actions, Jenkins, GitLab CI/CD를 활용한 자동 배포 방법을 살펴봤습니다.
다음 글에서는 **웹 애플리케이션 성능 모니터링 및 로깅 시스템 구축 (Prometheus, ELK Stack, Grafana)**을 소개하겠습니다.

다음 글 예고: "웹 애플리케이션 모니터링 및 로깅 – Prometheus, ELK Stack, Grafana 활용" 🚀

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함
반응형