본문 바로가기
Tool/Jenkins

젠킨스(Jenkins)란 ? - 지속적인 통합 ( CI, Continuous Integration)

by 코리늬 2019. 5. 15.
젠킨스 소개

젠킨스는 지속적인 통합 및 배포를 위한 방법을 제공한다.

프로젝트의 빌드, 테스트 실행, 배포 등의 통합을 자동화한다.

Maven, Ant, Gradle, Junit, Nexus와 잘 작동하며, Git, Svn과 같은 형상 관리 툴을 지원한다.

또한 Java 뿐만 아니라, WAS가 없는 Python, Node.js도 플러그인을 통해 젠킨스로 CI가 가능하다.

 

CI (Continuous Integration)

지속적인 통합은 애자일 개발 방법론에서 필요성이 드러난다.

예를들어 프로젝트 중반 쯤 고객이 프로젝트 진행 상황을 알고 싶다고 한다. 그럼 개발자들은 자신들의 코드를 통합 해야 하는데, 이 때 다음과 같은 문제점들이 발생할 것이다.

  1. 다른 개발자의 코드를 합치니 실행이 안된다.
  2. 내 PC에서는 됐는데 통합하니 실행이 안된다.
  3. 통합되기 전에 자신이 갖고 있는 소스가 최근 통합된 코드가 아닐 수 있다.

위 처럼 지속적으로 여러 개발자들이 통합을 하지 않은 상태에서는 개발 중간 과정을 확인하기가 어렵다.

하지만 젠킨스를 사용해 코드를 지속적으로 통합하면, 고객에게 프로젝트 진행 상황을 직접 눈으로 확인시켜 줄 수 있는 장점이 있다.

=> 고객이 수시로 확인할 수 있도록 항상 빌드가 유지되어야 한다.

 

CI 과정

  1. 개발자들은 형상 관리 툴을 사용해 코드를 공유한다.
  2. Jenkins는 형상 관리 툴에서 코드를 가져와 오류를 체크한다.
  3. 의존 관계에 있는 라이브러리들을 다운 받는다.
  4. 테스트 코드가 있다면 테스트를 실행한다.
  5. 테스트에 성공할 경우, 빌드를 해 실서버에 재배포 한다.

Jenkins는 빌드, 테스트, 배포 등을 직접 실행하는 것이 아니다.

단지 빌드, 테스트, 배포를 실행시키는 역할을 할 뿐이다.

work flow를 제어할 뿐, 소스를 가져오거나 Maven을 직접 실행하는게 아니다.

젠킨스를 사용할 때의 장점
  • 각종 배치 작업의 간략화
  • Build 자동화의 확립
  • 자동화 테스트
  • 코드 표준 준수여부 검사
  • 빌드 파이프라인 구성
    • 2개 이상의 모듈로 구성되는 레이어드 아키텍처가 적용 된 프로젝트에는 그에 따른 빌드 파이프라인이 필요하다.
    • 도메인 -> 서비스 -> UI 같이 각 레이어의 참조 관계에 따라 순차적으로 빌드를 진행하지 않으면 안된다.      젠킨스에서는 이러한 빌드 파이프라인 구성을 간단히 할 수 있고, 스크립트로 복잡한 제어도 가능하다.

댓글