Jenkins 정리

이한결·2024년 6월 8일

Software

목록 보기
5/5

Jenkins

  • Automated CI/CD Tool -> 소프트웨어를 Build, Test, Deploy하는 작업을 자동화
    CI(Continous Integration): 지속적인 통합
    CD(COntinous Deploy or Delivery): 지속적인 배포
  • Java로 작성
  • Jetty Web Server와 연동되어 서비스 제공
  • 1000개 이상의 plug-in

Jenkins Pipeline


Deployment: 개발자들은 로컬 환경에서 소스 코드를 작성
Code Commit: 개발자가 소스 코드를 관리 시스템에 커밋하면 Jenkins 파이프파인 시작
Build: 소스 코드를 컴파일하과 패키징
Test: 코드의 품질을 확인
Relase: 배포 가능한 상태로 만들기
Deploy/Delivery: 최종 제품을 실제 환경에 배포
Production: 소프트웨어가 프로덕션 환경에서 실행

파이프라인 유형
Scripted:Groovy로 작성, 더 복잡한 논리와 조건을 허용
Declarative:더 간단하고 구조화된 방식

Jenkins file

  • Jenkins pipeline을 정의해둔 Jenkinsfile이라는 텍스트파일(J는 대문자)
  • Apache Groovy언어로 작성
  • 반드시 github같은 SCM(소스 코드 관리)에 저장

SCM(소스 코드 관리)

Pool SCM

Jenkins에서 주기적으로 소스 코드 관리 저장소를 확인하여 변경 사항이 있는지 확인하는 방식

  • 지정된 시간마다 확인
  • 외부 서비스 통합 없이 Jenkins 자체적으로 작동
    시간 지정하는 방법(Schedule에 format 적기)
    MINUTE(0-59) HOUR(0-23) DOM(1-31) MONTH(1-12) DOW(0-7)
    예시: H/2 * * * * → 2분마다 pooling

Github Hook Trigger for GITScm Pooling

Github Webhook을 사용하여 소스 코드 저장소의 변경 사항을 실시간으로 Jenkins에 알리는 방식
Webhook: 새로운 변경 사항이 발생하면 remote repository가 변경사항을 지정된 URL로 push

  • 커밋, 푸시 등의 이벤트가 발생할 때 GitHub Webhook이 Jenkins 서버에 HTTP POST 요청을 보낸다
  • Jenkins는 이 요청을 받아서 즉시 빌드를 트리거
profile
열정으로 가득할 페이지

0개의 댓글