[업무 이해] Jenkins

  1. Jenkins란?
  2. Jenkins 특징
  3. Jenkins 구성
  4. 마치며

Jenkins란?


  • Jenkins는 소프트웨어 개발 시 지속적 통합(continuous integration, 이하 CI) 서비스를 제공하는 툴이다.
  • Jenkins는 Build 자동화를 통해 Build 산출물들을 공유 저장소 한 곳에 떨궈주는 역할을 한다.

Q. 지속적 통합(CI)란?

  • 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 Git, PSCM과 같은 공유 저장소에 통합히는 것을 의미한다.
  • Jenkins는 다수의 개발자가 개발 시 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 저장소에 주기적으로 업로드함으로 지속적 통합이 가능하도록 해준다.

Jenkins 특징


  • 자동화 테스트 수행
  • 컴파일 오류 검출
  • 대시보드 제공
  • 배포 스크립트 / 작업
  • 다양한 활용 및 손쉬운 확장
  • 안정적인 빌드 / 배포 환경

Jenkins를 이용하여 build 자동화를 수행한 경험이 있다. Job을 생성하고, 그 Job이 수행할 Command를 입력하고, 그 Command를 수행한 산출물이 어디에 떨어질건지 설정하는 작업을 해봤다. 처음 접해보는 Jenkins 환경이 처음이라 특정 코드를 Build하여 그 산출물을 공유 저장소에 떨궈주고, 나중에는 이 공유 저장소를 압축하여, 배포하는 이런 프로세스를 이해하는데도 시간이 참 오래 걸렸다.

Jenkins 구성


  • Jenkins는 이미지에서 보이는 것과 같이 구성이 되어있다.
  • New Item을 통해 새 Build Job을 만들 수 있다.
  • Build History를 통해 Build 진행 상황 모니터링이 가능하다.

이 외의 기능은 사용해보지 않아 잘 모르겠다..

마치며


  • 앞서 포스팅한 PSCM을 통해 형상 관리를 하고, 특정 Repository에 내가 개발한(변경 사항이 있는) 코드의 Changeset을 xlink 생성 / 편집하고, Jenkins에서 특정 시간마다 변경 사항을 내려받고, 그 Source를 빌드하여 산출물을 특정 저장소에 떨구고, 또, 그 산출물들을 배포하는 프로세스를 인턴을 진행하며 처음 알 게 되었다. 또, 이러한 CI CD를 담당하는 DevOps 직무가 있다는 것도 처음 알 게 되었다.