자바로 개발 된 애플리케이션
Jenkins 는 DB 연동 하지않고 모두 저장 경로 /var/lib/jenkins 저장
jenkins 구조
jenkins 문법
- SCM
- Jenkins 코드가 보관되어 있는 Git 저장소에 코드 변경사항을 감지하여 자동으로 파이프라인을 수행 폴링과 웹훅 방식 존재
- CI
- 파이프라인이 실행되면 Agent를 통해 파이프라인 스크립트에 정의된 작업이 실행
- 이 때 빌드, 테스트, 도커 이미지 빌드 등 순차적으로 진행
- CD
- 파이프라인에서 정의한 배포 작업에 따라 프로덕션 환경에 배포
- 설정: Jenkins에서 정기적으로 SCM 시스템을 체크하도록 구성합니다. 이때 체크하는 빈도는 사용자가 설정할 수 있습니다(예: 매 5분).
- 동작 원리: 설정된 간격마다 Jenkins는 SCM 시스템에 접속하여 최신 변경사항이 있는지 조회합니다.
- 반응: 변경사항이 감지되면 Jenkins는 연결된 파이프라인을 트리거합니다. 이 때 SCM 시스템에서 최신 코드를 가져와서 사용할 수 있습니다.
- 실행: 이후의 프로세스는 웹훅 방식과 동일하게, Jenkins가 정의된 파이프라인 스크립트에 따라 작업을 수행합니다.
- 설정: SCM 시스템에 Jenkins 서버로 통지할 웹훅을 설정합니다. 이 설정은 보통 SCM의 설정 페이지에서 할 수 있으며, 코드가 푸시되거나 머지 요청이 생성될 때 Jenkins 서버의 특정 URL로 HTTP 요청을 보내도록 구성합니다.
- 동작 원리: 개발자가 SCM 시스템에 코드를 푸시하면, SCM 시스템은 등록된 웹훅 URL로 요청을 보내 Jenkins에게 알립니다.
- 반응: Jenkins는 이 HTTP 요청을 받고 연결된 파이프라인 또는 작업을 트리거합니다. 이 요청에는 브랜치, 커밋 ID 등 변경 사항에 대한 정보가 포함될 수 있습니다.
- 실행: Jenkins는 해당 파이프라인의 스크립트에 따라 빌드, 테스트, 배포 등의 자동화 작업을 수행합니다.
- 웹훅: 더 즉각적이며 서버 자원을 효율적으로 사용합니다. SCM 시스템에 변화가 있을 때만 Jenkins가 동작하므로 불필요한 체크가 없습니다.
- 폴링: 웹훅을 지원하지 않는 SCM 시스템에서 유용하며, SCM 시스템에서 웹훅 설정에 제한이 있을 경우 대안이 될 수 있습니다. 그러나 정기적인 체크로 인해 더 많은 서버 자원을 소모할 수 있습니다.
Jenkins를 활용한 CI/CD 시스템은 개발부터 배포까지의 과정을 자동화하여 다음과 같은 이점을 제공합니다:
Jenkins는 폴링 방식과 웹훅 방식을 통해 코드 변경을 감지하고, 설정된 파이프라인에 따라 자동으로 빌드부터 배포까지 진행합니다. 특히 파이프라인 스크립트를 통해 유연하고 확장 가능한 CI/CD 환경을 구축할 수 있습니다.