본문 바로가기

Dev Ops/Jenkins

Jenkins란? 무엇인가?

CI/CD 툴로 가장 유명한 Jenkins가 무엇인지 알아보려 합니다.

 

Jenkins의 공식 홈페이지는 https://www.jenkins.io/ 이고, 대표 마크는 위에 보이는 것 처럼 호텔 웨이터 문양입니다.

웨이터가 손님이 불편해 하는 것들을 대신해주듯이 Jenkins는 프로그래머가 힘들어하는 것들을 대신 해주기 때문에 이런 마크를 선택하지 않았나 생각됩니다. 

 

프로그래머 업계에서는, 어떤 사람이 퇴직하면 그 사람에게 

'너가 하던 일 전부 Jenkins 한테 인수인계 하고가~' 라고 한다는 농담이 있을 정도로 맡은 일을 잘 수행하는 CI/CD툴 입니다.

 

또한 많은 오픈소스들이, Jenkins를 이용해 관리되고 있습니다. 예를 들어, Main Branch에 어떤 커밋 이력이 남으면, 그 코드를 테스트 코드로 검증하고, 빌드하고 Realease 까지 하도록 자동화 해놓는 것이죠. 그렇게 하면 우리가 매번 반복적으로 테스트하고, 빌드하고, 배포까지 하는데 투자하는 시간을 줄일 수 있습니다. 또한 배포의 진행상황을 이력으로 남겨서, 어떤 문제가 발생할 때 원인을 추적할 수도 있습니다.

 

젠킨스의 대표 기능

빌드

  • 젠킨스는 웹 훅을 사용하여, Triggered 될 수 있습니다. 따라서 깃헙과 연동되어 커밋이 올라올 경우 Build를 할 수 있습니다.
  • Cron과 비슷하게 Periodic한 Job을 설정할 수 있습니다.
  • URL을 통해 특정 Build를 수행할 수 있습니다.
  • 큐에 있는 것들이 끝난 후, 다른 빌드를 수행할 수 있습니다.

플러그인

  • Junit같은 Java 테스트 도구 플러그인을 설치해, 테스트 과정을 파이프라인에 추가할 수 있습니다.
  • Mailer: 빌드가 실패하거나, Unstable하거나 성공적으로 빌드가 되었을 때 email로 결과를 알려주는 플러그인
  • Credentials: 다양한 종류의 비밀번호나 key들을 안전하게 관리할 수 있는 Plugin
  • Monitoring external jobs: Job들의 진행상황을 모니터링 할 수 있는 기능을 제공

이외에도 다양한 플러그인들이 존재하고, 이들을 여러개 묶어서 사용할 수 있습니다.

그리고 Ansible Script를 통해 배포까지 진행할 수 있습니다.

 

다음 포스팅에서는 Jenkins를 실제로 어떻게 사용하는지 자세한 내용을 알아보도록 하겠습니다. 😀