CI(Continuous Integration) tool라고도 표현이 된다.
</aside>
<aside>
🔑
기능
충돌 방지
개발자들이 하나의 프로그램을 개발 과정에서 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유영역에 있는 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해준다.
배치 작업의 간략화
프로젝트 간에 개발자들은 순수한 개발 작업 이외에 DB set up이나 환경설정, Deploy작업과 같은 단순 작업들을 CLI로 작업을 하여 시간과 노력이 들어갔지만 jenkins를 사용하여 웹 인터페이스로 쉽게 해결이 가능하게 되었다.
Build 자동화의 확립
java는 maven과 gradle로 빌드 툴을 사용하고 있는데, jenkins 또한 연동하여 자동화를 실행시켜 프로젝트 진행의 효율성을 높일 수 있다.
자동화 테스트
jenkins의 가장 큰 장점 중 하나로 subversion이나 git과 같은 버전관리시스템과 연동하여 코드 변경을 감지하고 자동화 테스트를 수행하여 개인이 미처 실시하지 못한 테스트가 존재하여 안정망 역할을 해준다.
빌드 파이프라인 구성
2개 이상의 모듈로 구성되는 레이어드 아키텍처가 적용 된 프로젝트에는 빌드 파이프라인 구성이 필요하다. 예로 “도메인 → 서비스 → UI” 같은 각 레이어의 참조 관계에 따라 순차적으로 빌드를 진행해야 하는데 jenkins는 이러한 빌드 파이프라인 구성을 간단히 가능하며 스크립트를 통하여 매우 복잡한 제어까지도 가능하다.
</aside>
<aside>
🚧
jenkins 구조
Master/Slave 구조
Master : controller라 불리며 slave를 관리하고 작업 스케줄링과 slave 모니터링을 포함하여 다양한 작업을 관리
Slave : agent라 불리며 실제 파이프라인 작업을 수행, 클라우드 컴퓨터를 통해 controller에 연결되어 다양한 유연성을 제공