Jenkins

2020. 3. 19. 14:50배포

Jenkins란

Jenkis란 소프트웨어 개발 시 지속적으로 통합 서비스를 제공하는 툴입니다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해줍니다. 그리고 프로젝트 빌드, 테스트 실행 배포 등의 통합을 자동화하는 기능도 포함하고 있습니다.

Jenkins의 이점

  • 프로젝트 표준 컴파일 환경에서의 컴파일 오류 검출
  • 정적 코드 분석에 의한 코딩 규약 준수여부 체크
  • 결합 테스트 환경에 대한 배포작업
  • 각종 배치 작업의 간략화: 과거에는 CLI(Command Line Interface)로 실행되던 작업들이 Jenkins덕분에 웹 인터페이스로 쉽게 이용할 수 있게 됨
  • Build 자동화의 확립: Java는 maven과 gradle이라는 빌드툴을 사용하는 경우가 많은데, Jenkins와 연동하여 빌드 자동화를 통해 프로젝트 진행의 효율성을 향상시킬 수 있음
  • 자동화 테스트: 젠킨스는 Git과 같은 버전 관리 시스템과 연동하여 코드 변경을 감지하고 자동화 테스트를 수행
  • 빌드 파이프라인 구성: 2개 이상의 모듈로 구성되는 프로젝트의 경우, 레이어드 아키텍처가 적용되어 있고 이에 따른 빌드 파이프라인 구성이 필요합니다. 예를 들자면 도메인 -> 서비스 -> UI와 같이 각 레이어의 참조관계에 따라 순차적으로 빌드를 진행해야 합니다. 이러한 파이프라인의 구성은 선형 뿐만 아니라 간단한 스크립트를 통해 매우 복잡한 제어까지도 가능하게 합니다.

Jenkins의 CI 과정

이미지 출처: http://itnovice1.blogspot.com/2019/02/jenkins-jenkins.html

  1. 개발자들은 GitHub를 통해 코드를 공유
  2. Jenkins는 Github에서 코드를 가져와서 오류를 체크
  3. 의존 관계에 있는 라이브러리들을 다운 받음
  4. 테스트 코드가 있으면 테스트를 실행
  5. 테스트에 성공할 경우, 빌드 후 실서버에 재배포
  • Jenkins는 빌드, 테스트, 배포 등을 직접 실행하는 것이 아니라 실행시키는 역할을 함
  • workflow를 제어하는 것이지, 소스를 가져오거나 Maven을 직접 실행하는 것이 아님
728x90

'배포' 카테고리의 다른 글

GitHub Webhook을 이용해 Jenkins Job을 자동 실행하기  (0) 2020.03.31
Git Flow  (0) 2020.03.24
배포와 CI/CD  (0) 2020.03.19