[ DevOps ] Jenkins

황승환·2021년 11월 10일
1

DevOps

목록 보기
2/2
post-thumbnail

Jenkins


Jenkins는 CI/CD를 제공해주는 tool이다. 이는 다수의 개발자들이 공동 작업을 할 때에 merge 과정에서 발생할 수 있는 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유영역에 있는 저장소에 빈번히 업로드함으로써 지속적인 통합이 가능하도록 해준다.

Jenkins와 같은 CI/CD tool들이 등장하기 전에는 일반적으로 일정시간마다 빌드를 실행하였다. 개발자들의 커밋이 모두 끝난 심야 시간대에 빌드 타이머가 집중적으로 진행되었고 이를 Nightly-build라고 불렀다.

Jenkins는 일정시간마다 빌드하는 방식에서 조금 더 나아가 Git과 같은 버전 관리 시스템과 연동하여 개발자의 커밋이 감지될 때 자동적으로 자동화 테스트가 포함된 빌드가 작동되도록 설정할 수 있다.

각각의 단계에 대한 스크립트 작성의 필요성을 없애주지는 않지만, 사용자가 쉽게 구축할 수 있는 것보다 더 빠르고 더 강력하게 빌드, 테스트, 배포 도구 등 체인 전체를 통합할 수 있는 방법을 제공한다.

Jenkins의 이점

  • 지속적 통합을 사용하여 빌드, 테스트, 배포 과정을 자동화하여 개발 생산성을 향상할 수 있다.
  • 자동화 테스트를 통하여 소프트웨어 품질을 향상할 수 있다.
  • 지속적인 통합을 통하여 안정적인 릴리즈를 빠르게 배포할 수 있다.
  • 프로젝트 표준 컴파일 환경에서의 컴파일 오류를 검출할 수 있다.

Jenkins의 기능

애플리케이션 개발에서의 커밋은 매우 빈번하게 발생한다. 그래서 매 커밋마다 빌드를 실행하지 않고, 작업이 Queuing되어 자신의 차례를 기다리고 실행한다.

배치 작업의 간략화

애플리케이션 개발의 업무 중 코드를 작성하는 개발 업무 외에도 Database 세팅, 배포 작업 등의 작업에도 시간을 쓰게 되는데, Jenkins는 이 작업들을 Web Interface로 쉽게 작업할 수 있게 해준다.

자동화

Jenkins는 통합, 프로젝트 빌드, 테스트 실행, 정적 코드 분석, 배포 작업 외에도 많은 프로세스들의 자동화를 제공한다. 빌드의 자동화는 프로젝트 진행의 효율성을 높여주고, 가장 중요한 테스트 자동화는 개인이 실시하지 못한 테스트가 있더라도 자동화 테스트를 통해 진행된다. 자동화 테스트는 CI에서 가장 중요하다고 할 수 있다.

코드 표준 준수 여부 검사

코드 표준 준수 여부의 검사, 정적 분석을 통한 코드 품질 검사를 빌드 내부에서 수행하여 기술적 부채의 감소에도 크게 기여한다.

빌드 파이프라인 구성

2개 이상의 모듈로 구성된 레이어드 아키텍처 프로젝트는 그에 따른 빌드 파이프라인을 구성해야 한다. Jenkins는 빌드 파이프라인의 구성을 간단하게 할 수 있도록 해주고 스크립트를 통해 복잡한 제어도 가능하게 한다.

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글