jenkins

Jenkins | Jenkins란

no-easy-ray 2021. 11. 15. 23:13

우리 회사는 CI CD를 젠킨스를 이용해서 진행하고 있습니다.

사용하고 있는 만큼 간단하게 설명한다고 생각하고 Jenkins에 대해서 정리를 해보려고 합니다.

 

Jenkins는 보통 CI도구로 알려져 있습니다.

Jenkins에 대해서 알아보기 전에 CI란 무엇일까요??

 

CI(Continuous Integration)란


구글에 CI란 이라고 검색을 해보면 지속적 통합(continuous integration) 이러한 단어를 확인할 수 있습니다.

하지만 이러한 단어를 만났을 때 바로 와닿지 않을 수 있습니다. (나 또한 그랬다...)

따라서 지속적 통합(CI)을 간단한 예시를 통해 설명해 보려고 합니다.

 

예시로 Spring Boot로 Api를 개발한다고 가정을 해봅시다.

 

우리가 어플리케이션을 개발한다고 했을 때 항상 로컬 환경에서만 실행시키는 것이 아니라 서비스를 실제 사용자들이 이용하기 위해서는 배포라는 것을 해야 합니다.

 

배포라는 게 쉽게 된다면 정~말 좋겠지만... 배포를 하기 위해서는 여러 단계가 필요합니다.ㅠㅠ

 

먼저 코드를 작성하고

빌드를 하고..

테스트를 하고...

코드에 대해서 정적 분석을 할 수도 있고....

컨테이너 환경의 경우에는 도커 이미지를 빌드하고.....

쿠버네티스 환경에서는 Helm차트를 말기도 한다......

 

각 팀마다 배포에 필요한 여러 가지 프로세스들이 존재할 것입니다. (생각보다 해야 할 일들이 많다)

 

배포를 한번 하기 위해서 이러한 작업들을 매번 해주어야 하는데 너무 반복적인 작업들이 많이 발생하는 게 느껴집니다.

(느껴지지 않았다면 간단한 여러 개의 어플리케이션을 배포를 해본다면 어느 정도 체감이 될 거라 생각합니다...)

 

지속적인 통합(CI)은 이러한 반복적인 노가다를 하지 않기 위해 반복적인 프로세스들을 자동으로 해주는 것이라고 할 수 있습니다.

 

Jenkins란


그렇다면 이제 Jenkins는 CI도구라는데 어떻게 배포에 필요한 일련의 작업들을 자동화할 수 있는지 알아봅시다.

 

파이프라인

Jenkins는 반복적인 작업들을 다음과 같이 파이프라인이라는 것을 통해서 수행합니다.

 

 

각 단계에서 사용되는 명령어는 거의 동일하기 때문에 반복적으로 사용되는 명령어들을 각 파이프라인 단계마다 실행함으로써 자동화를 가능하게 합니다.

 

Webhook

조금 더 나아가서 이러한 파이프라인조차 내가 일일이 실행시키는 것이 귀찮은 분들이 존재할 수 있습니다.

 

 

이러한 경우 위와 같이 젠킨스를 이용하여 GitHub의 코드가 Merge 되거나 Pull Request가 왔을 경우 webhook을 이용하여 파이프라인을 자동으로 실행시켜 보다 편리하게 빌드 환경을 구성할 수도 있습니다.

 

편리한 작업

그리고 마지막으로 젠킨스는 이러한 작업을 할 수 있는 UI를 제공하여 편리하게 작업을 할 수 있습니다.

 

 

마무리


사실 Jenkins를 사용하다 보면 위에서 설명한 기능들보다 더 많은 기능들을 제공하고 있습니다.

이번 글에는 간략하게 Jenkins가 어떤 일들을 하는지에 대해 알아보는 시간으로 하였고

앞으로 차근차근 간단한 예제들을 만들어보면서 더 많은 기능들의 사용법을 하려고 합니다.

 

감사합니다.