DevOps & Infra/CICD

[Jenkins]CI/CD 및 Jenkins에 대해서

롱하 2025. 3. 27. 09:02

이번에 회사를 이직하게 되면서 현 회사 개발팀의 프로젝트 체계 확립을 하는 업무의 PL로써 해야할 작업들이 굉장히 많았는데 그 중에 하나가 기존의 재래식 배포에서 CI/CD로 배포 방식을 변경하는것이었다.

그에 따라서 먼저 Jenkins의 정의에 대해서 알아보고 글로 남겨보고자 한다.

 

✔ 기존의 배포 방식

전통적인 방식 (재래식 배포 / 수동 배포 방식)

  • 개발자가 직접 npm run build, ./gradlew build
  • FTP로 빌드 파일 서버에 업로드
  • 서버에 들어가서 Docker 띄우거나 Tomcat 재시작

→ 이건 수동, 절차 기반, 위험부담 있는 방식

✔ 그럼 CI/CD는 뭐가 다를까?

CI/CD는 자동화된 배포 흐름

개념 설명

CI (지속적 통합) 코드를 Push할 때마다 자동으로 빌드 + 테스트
CD (지속적 배포) 빌드가 끝나면 자동으로 서버에 배포까지 진행

 

📌 즉, 개발자가 Git에 코드만 올리면,

→ 알아서 테스트하고

→ 알아서 서버에 배포되고

→ 알아서 Docker도 재시작

 

📌 기대효과

  • 배포 시간 단축
  • 사람 손으로 배포할 때 생기는 실수 방지
  • 반복 업무 자동화로 개발 생산성 향상

✔ Jenkins란?

 

  • 오픈소스 기반의 CI/CD 자동화 도구
  • 다양한 플러그인을 통해 Git, Docker, Tomcat, Slack 등과 쉽게 연동 가능
  • 웹 UI를 통해 파이프라인 설정이 쉬움

 

✔ Jenkins의 주요 기능

  • 빌드 자동화: 코드 푸시 시 자동으로 빌드 실행
  • 테스트 실행: JUnit 등 테스트 프레임워크 연동 가능
  • 배포 자동화: 스크립트를 이용해 WAS나 클라우드 서버에 자동 배포
  • 다양한 플러그인 지원: Slack 알림, SonarQube 연동, GitHub hook 등

 

* Jenkins를 활용한 실제 CI/CD 파이프라인 예시

GitHub → Jenkins (빌드 및 테스트) → Docker 이미지 생성 → 컨테이너 배포 (Tomcat) → Slack 알림

 

 

  • GitHub에 push 발생
  • Jenkins가 Git hook을 받아 빌드 및 테스트 수행
  • Docker로 이미지 생성
  • Docker container를 Tomcat 서버에 배포
  • 배포 성공/실패 여부를 Slack으로 팀원에게 알림

✔ Jenkins 도입 시 기대 효과

  • 배포 누락/오류 방지
  • QA 시간 단축
  • 개발자 피드백 속도 향상
  • 운영 안정성 증가

 

> 여기서 Git Actions와 Jenkins 중에 어떤걸 사용할지 디테일하게 분석도 같이 해볼 예정.