정리/Jenkins

1.Jenkins란?

알렉스 페레이라 2023. 6. 27. 19:00

이직을 위해 공고를 찾는중,, 꼭 보이는 키워드들이 몇가지있다.

 

그것은 바로

  • node.js(react.js, vue.js)
  • AWS
  • k8s
  • 그리고 Jenkins

노예

Jenkins는 무엇이냐. 설명하기 위해서는 일단 CI/CD라는 용어에 대해 설명을 해야한다.

 

CI는 Continuous Integration의 준말로, 지속적통합을뜻한다. 풀어 설명하자면 코드에 변경이 발생될때마다, 정기적으로

빌드 및 테스트를 거쳐 공유 Repository에 병합된다. 쉽게말하면  SVN 혹은 Git따위에서 소스를 변경하면, 자동적으로 빌드와 테스트를 해서 특정 경로에 떨궈준다는 것이다!!

 

CD는 Continuous Delivery의 준말로, 지속적 배포를뜻한다. CI단계에서 발생한 결과물을, Repository에서 고객이사용 가능한 프로덕션 환경까지 자동으로 릴리즈하는것을 의미한다. 쉽게말하면 빌드의 결과물(ex. War파일)을 서버(Tomcat)에 자동으로 배포해주는것이다!!

 

위와같은 CI/CD툴로는 AWS CodeBuild, Azure, Bamboo, Gitlab등 다양한 툴이 있지만, 무료이고 가장 유명한 Jenkins를 설치해보려 한다.

 

 

 

Jenkins의 특징은 다음과 같다.

편리한 설정

웹 기반의 콘솔로 다양한 인증 기반과 결합이 가능하며 권한 관리 기능을 통해 안전한 빌드/배포 환경을 구축할 수 있다. 수많은 플러그인을 사용하여 자동화 할 수 있어 반복되는 작업을 줄일 수 있다. 빌드/배포의 결과에 대해 통지 받을 수 있는 설정이 간편하고 다양한 채널을 통해 빠르게 피드백을 받을 수 있다.

안정적인 빌드/배포 환경

소스 버전 관리 툴과 연동하여 코드 변경을 감지하고, 자동화 테스트를 포함한 빌드를 수행하여 소프트웨어 품질을 향상시킬 수 있다. 자동화 테스트에는 코딩 표준 준수 여부 체크, 유닛 테스트, 통합 테스트 등을 설정할 수 있고 테스트 결과에 대한 피드백을 받아 잠재적인 오류를 사전에 예방할 수 있다. 빌드 결과물을 지속적으로 배포하도록 설정하여 개발 프로세스 전체를 자동화할 수 있다.  

 

다양한 활용 및 손쉬운 확장

Jenkins는 많이 사용 되고 있는 오픈 소스 소프트웨어로 문서화가 잘 되어 있다. 빌드/배포 이외에도 스케쥴링을 이용한 배치 작업에도 활용되는 등 다양한 적용 사례들을 참고할 수 있다. 플러그 인을 직접 개발하여 기능을 확장하는 것도 가능하다.

 

각종 배치 작업의 간략화

프로젝트 기간 중에 개발자들은 순수한 개발 작업 이외에 DB셋업이나 환경설정, Deploy작업과 같은 단순 작업에 시간과 노력을 들이는 경우가 빈번하다. 데이터베이스의 구축, 어플리케이션 서버로의 Deploy, 라이브러리 릴리즈와 같이 이전에 CLI로 실행되던 작업들이 젠킨스 덕분에 웹 인터페이스로 손쉽게 가능해졌다.

 

Build 자동화의 확립

빌드 툴의 경우 Java는 maven과 gradle이 자리잡고 있으며, 이미 빌드 관리 툴을 이용해 프로젝트를 진행하고 있다면 젠킨스를 사용하지 않을 이유가 하나도 없다. 젠킨스와 연동하여 빌드 자동화를 통해 프로젝트 진행의 효율성을 높일 수 있다.

 

자동화 테스트

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

 

코드 표준 준수여부 검사

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

 

 

 

이제 다음시간에는 이렇게나 좋은 Jenkins를 설치해보자