[Jenkins] 젠킨스 기본 이해

Posted by 김성철

Jenkins - 기본 이해

https://ict-nroo.tistory.com/31
https://krksap.tistory.com/1377

## 젠킨스란?
젠킨스는 소프트웨어 개발 시 지속적으로 통합 서비스를 제공하는 툴이며, CI (Continuous Integration) 이라고 표현함

다수의 개발자들이 하나의 프로그램을 개발 할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유영역에 있는 저장소에 빈번히 업로드 함으로써 지속적 통합이 가능하도록 해줌

개발자들이 작성한 소스들의 커밋이 모두 끝난 싲ㅁ야 시간대에 이러한 빌드를 실행하는 방식이 일방적이 였음

젠킨스는 이러한 방법에서 좀더 발전하여 svn , git 과 같은 버전관리 시스템과 연동하여 소스의 커밋을 감지하면 자동적으로 자동화 테스트가 포함된 빌드가 작동되도록 설정 할 수 있음

젠킨스의 장점

개발중인 프로젝트에서 커밋은 매우 빈번히 일어나기 때문에 커밋 횟수만큼 빌드를 실행하는 것이 아니라 작업이 큐잉되어 자신이 실행될 차례를 기다리게 됨
코드의 변경과 함께 이뤄지는 이 같은 자동화된 빌드와 테스트 작업들은 다음과 같은 이점들을 가져다 줌

  • 프로젝트 표준 컴파일 환경에서의 컴파일 오류 검출
  • 자동화 테스트 수행
  • 정적 코드 분석에 의한 코딩 규약 준수여부 체크
  • 프로파일링 툴을 이용한 소스 변경에 따른 성능 변화 감시
  • 결합 테스트 환경에 대한 배포작업

각종 배치 작업의 간략화

  • 프로젝트 기간중에 순수 개발작업 외에 DB 환경설정 배포작업과 같은 단순작업에 시간이 많이 소요되었음,
    젠킨스는 DB구축, 어플리케이션 서버의 배포, 라이브러리 릴리즈와 같이 CLI로 실행되던 작업들을 손쉽게 가능하게 해줌

Build 자동화의 확립

  • 빌두 툴의 경우 JAVA는 Manver , Gradle이 있으며 이미 빌드 관리 툴을 이용해 프로젝트를 진행하고 있다면 젠킨스와 연동하여 빌드 자동화를 통해 프로젝트 진행의 효율성을 높일 수있음

자동화 테스트

  • 자동화 테스트는 젠킨스를 사용해야 하는 가장 큰 이유 중 하나이며, 사실상 자동화 테스트가 포함되지 않은 빌드는 CI자체가 불가능하다고 봐도 무방함
    젠킨스는 Subversion이나 Git과 같은 버전관리시스템과 연동하여 코드 변경을 감지하고 자동화 테스트를 수행하기 때문에 만약 개인이 미처 실시하지 못한 테스트가 있다 하여도 든든한 안전망이 되어준다고함

코드 표준 준수여부 검사

  • 자동화 테스트와 마찬가지로 개인이 미처 실시하지 못한 코드 표준 준수 여부 검사나 정적 분석을 통한 코드 품질검사를 빌드 내보에서 수행함으로써 기술적 부채의 감소에도 크게 기여함

빌드 파이프라인 구성

  • 2개 이상의 모듈로 구성되는 레이어드 아키텍처가 적용된 프로젝트에는 그에 따른 빌드 파이프 라인 구성이 필요함
    도메인 -> 서비스 -> UI 와 같이 순차적으로 빌드를 진행해야 할때, 젠킨스에서는 이러한 빌드 파이프라인을 간단히 구성할 수 있으며, 스크립트를 통해서 매우 복잡한 제어까지도 가능함

대시보드

  • 대시보드를 통해서 배포작업의 상황을 모니터링 할 수있으며, 해당 배포작업에 대한 오류메시지 또한 확인이 가능

젠킨스 툴

젠킨스 툴에서 빌드 후 조치 메뉴가 안보일 경우 “Deploy to container Plugin” 플러그인 설치

젠킨스에서 ssh key 로 배포서버와 간단히 통신하려고 한다면 “Publish Over SSH” 플러그인 설치

젠킨스 툴에서 “blue ocean” 을 사용하려고 한다면 “blue ocean” 플러그인 설치
https://logical-code.tistory.com/179
블루오션은 UX에 중점을 두고 좀더 시각화 해서 사용하기 편하게 해줌