GitLab CI/CD Pipeline

GitLab CI/CD Pipeline

SVN 형상관리 + Jenkins/Hudson 수동 빌드 환경을 GitLab CI 자동 빌드 + S3 아티팩트 + 서버 배포 스크립트 체계로 전환하고, 10개+ 서비스(Spring Boot, Ant 데몬)에 적용한 프로젝트입니다.
프로젝트 기여도 100%

1. Overview

기존 SVN 형상관리 + Jenkins/Hudson 수동 빌드·배포 환경을, GitLab CI 자동 빌드 + S3 아티팩트 관리 + 서버 배포 스크립트(prepare/deploy/rollback) 체계로 전환했습니다.

서비스 유형(Spring Boot fat JAR, Ant 데몬 JAR+lib)에 관계없이 동일한 CI/CD 패턴을 적용할 수 있도록 설계하여 10개+ 서비스에 확장 적용했습니다.


2. Problem Statement

문제영향
SVN 레거시 VCS + Jenkins/Hudson브랜치 전략 불가, 빌드 서버 노후화
수동 배포 (SCP + SSH)배포 시간 30분+, 휴먼 에러 빈발
롤백 체계 부재장애 시 복구 시간 길어짐
배포 이력 추적 불가누가 언제 무엇을 배포했는지 모름

3. CI/CD Architecture

배포 흐름


CI/CD Pipeline

CICD Pipeline Diagram

배포 전략

환경트리거방식이유
TESTtest 브랜치 push자동 (SSH + SCP)빠른 검증
PRDmain 브랜치 pushS3 업로드만 자동, 배포는 수동금융권 안전성 확보

4. PRD 배포 스크립트 (3종)

서버에 설치된 셸 스크립트로 S3 아티팩트를 관리하며 안전하게 배포:

스크립트기능
prepare-release.shS3에서 최신 아티팩트 다운로드 + 현재 버전을 backup에 백업
deploy-release.sh프로세스 중지 → 재시작 → Health Check
rollback.shbackup에서 이전 버전 복원 → 재시작

배포 절차

# 1. S3에서 다운로드 + 현재 버전 백업
./prepare-release.sh

# 2. 프로세스 재시작
./deploy-release.sh

# 3. 문제 발생 시 즉시 롤백 (backup에서 복원)
./rollback.sh

5. 적용 서비스 유형

Type A: Spring Boot (Gradle, fat JAR)

항목내용
빌드Gradle bootJar
산출물단일 JAR (타임스탬프 태깅)
런타임Amazon Corretto Java 21
배포 단위단일 JAR 교체 → 재시작

Type B: Ant Daemon (JAR + lib)

항목내용
빌드Ant jar
산출물JAR + lib/ (의존성 20~30개) tar.gz 패키징
런타임Amazon Corretto Java 8
배포 단위tar.gz 풀어서 JAR+lib 교체 → 재시작

6. SVN → GitLab 이관

  • git-svn을 이용해 커밋 이력을 유지하면서 Git으로 전환
  • 기존 Jenkins/Hudson 빌드를 GitLab CI로 대체
  • 브랜치 전략 도입: main / test / develop

7. Key Results

지표BeforeAfter
형상관리SVNGitLab (브랜치 전략)
빌드Jenkins/Hudson (수동)GitLab CI (push 자동)
배포 시간30분+ (수동)5분 이내
롤백 시간수십 분10초 이내 (rollback.sh)
CI/CD 대상0개10개+ 서비스
배포 이력추적 불가S3 타임스탬프 버전 관리
PRD 안전성없음수동 트리거 + 자동 백업 + Health Check

8. Used Skills

  • GitLab CI/CD (.gitlab-ci.yml)
  • Amazon S3 (아티팩트 버전 관리)
  • Bash (배포 스크립트: prepare / deploy / rollback)
  • Gradle (Spring Boot) / Ant (레거시 데몬)
  • SSH / SCP (TEST 자동 배포)
  • Spring Actuator (Health Check)
  • EC2 (Amazon Linux 2)
  • git-svn (SVN → GitLab 이관)
  • ECR (CI Runner 이미지 관리)