젠킨스(Jenkins)

나영·2023년 1월 19일
0
post-thumbnail

젠킨스(Jenkins)란 ?

  • 소프트웨어 개발 시 지속적 통합(continuous integration, CI) 서비스를 제공하는 툴
  • 다수의 개발자들은 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 GIT 등의 저장소에 빈번히 업로드함으로써 지속적 통합을 가능하도록 함.

💡 CI/CD란 ?

  • CI (Continuous Integration)
    - 빌드/테스트 자동화 과정
    - 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미
    - 지속적으로 코드에 대한 통합을 진행하면서 품질 유지
    - 개발자간의 코드 충돌 방지하기 위한 목적
    - 정기적인 빌드 및 테스트를 거쳐 공유 레포지토리에 병합되는 과정
    - 여러 명이 하나의 코드에 대해 수정을 진행

  • CD (Continuous Delivery/Deploy)
    - 배포 자동화 과정
    - 지속적인 서비스 제공 or 지속적인 배포를 의미

    • 지속적인 서비스 제공 (Continuous Delivery)
      • CI를 통해 빌드/테스트 병합까지 성공적으로 진행됐다면, 이를 통과한 코드에 대해 테스트서버와 운영서버에 자동으로 릴리즈
      • 운영팀이 보다 빠르고 손쉽게 애플리케이션을 Production으로 배포 가능
      • Production 환경으로 배포할 준비가 되어 있는 코드베이스를 확보하는 것이 목표

    • 지속적인 배포 (Continuous Deploy)
      • Production 준비가 완료된 빌드를 Source Repository에 자동으로 릴리즈하는 지속적 서비스 제공의 확장된 형태
      • 애플리케이션을 하나의 Production으로 릴리즈하는 작업을 자동화

이전의 배포 방식

과정

  1. 코드를 코드 저장소에 push

  2. 로컬 환경에서 프로젝트 build

  3. 추출물을 테스트 서버로 전송

  4. 배포 스크립트를 통해 배포

  5. 테스트 진행

  6. 테스트 완료 후 코드 저장소 release 브랜치에 push

  7. versioning 후 로컬 환경에서 프로젝트 build

  8. 추출물을 본 서버로 전송

  9. 배포 스크립트를 통해 배포

⚠️ 문제점

  • 배포의 진행사항, 시기, 이슈 등을 수기로 작성하고 개발 환경을 프로젝트에 맞게 세팅해야 함.
  • 반복되는 push, build, 전송, 배포 등을 하는 데 불필요한 시간이 많이 듦.

젠킨스의 자동화 배포

젠킨스 사용 이유

  • 로컬에서 개발한 소스를 수작업으로 서버에 올린 후 쿠버네티스 클러스터에 컨테이너로 배포한다는 것은 말도 안되는 일 ..!
  • BUT, 쿠버네티스 위에 CI/CD pipeline을 만들면 로컬에서 애플리케이션 개발 후 git에 push하면 자동으로 서버 내 쿠버네티스 클러스터에 배포됨.

🤩 젠킨스의 이점

  • 프로젝트 표준 컴파일 환경에서의 컴파일 오류 검출
  • 자동화 테스트 수행
  • 정적 코드 분석에 의한 코딩 규약 준수 여부 체크
  • 프로파일링 툴을 이용한 소스 변경에 따른 성능 변화 감시
  • 결합 테스트 환경에 대한 배포 작업

이 외에도 젠킨스는 1000여가지가 넘는 플러그인을 온라인으로 간단히 설치할 수 있는 기능을 제공하고 있고, 스크립트를 이용해 쉽게 자신에게 필요한 기능 추가 가능 !

CI/CD pipeline 구성도


📍 참고자료

0개의 댓글