티스토리 뷰
웹 개발 실무 기술 A to Z # 8 - CI/CD 구축: GitHub Actions, Jenkins, GitLab CI/CD 활용
octo54 2025. 2. 24. 17:19웹 개발 실무 기술 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 초기 설정
- http://localhost:8080 접속
- 기본 관리자 비밀번호 입력 (docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword)
- 추천 플러그인 설치
- 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에서 파이프라인 실행
- Jenkins > New Item > Pipeline 선택
- Pipeline Script Path → Jenkinsfile 설정
- 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 실행
- GitLab 저장소에서 CI/CD 설정 활성화
- .gitlab-ci.yml이 있는 상태에서 푸시하면 자동 실행
- 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 활용" 🚀
'project > 웹 개발 실무 기술 A to Z' 카테고리의 다른 글
- Total
- Today
- Yesterday
- nextJS
- github
- fastapi
- AI챗봇
- Ktor
- Page
- 백엔드
- llm
- babel
- PostgreSQL
- Webpack
- 백엔드개발
- til
- nodejs
- LangChain
- 페이지
- 프론트엔드
- 챗봇개발
- 웹개발
- 개발블로그
- 관리자
- Docker
- 로컬LLM
- Python
- Project
- rag
- kotlin
- 리액트
- Next.js
- REACT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |