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는 이 요청을 받아서 즉시 빌드를 트리거