Jenkins

[Jenkins] What is Jenkins? CI/CD란?

Jeong Jeon
반응형

1). 젠킨스란?

  • 소프트웨어 개발 시 지속적으로 통합 서비스를 제공하는 툴
  • CI(Continuous Integration) 툴 이라고 표현
  • 쉽게 말해 빌드 자동화 툴이다.

다수의 개발자가 하나의 프로젝트를 만들때 버전 충돌을 방지하기위해 각자 작업한 내용을 공유영역에 있는 저장소에 자주 업로드함으로써 지속적으로 통합을 가능하게 해준다.

젠킨스와 같은 CI툴이 등장하기 전에는 일정시간마다 빌드를 실행하는 방식이 일반적이었다.

특히 개발자들이 당일 작성한 소스들의 커밋이 모드 끝난 심야 시간대에 이러한 빌드가 타이머에 의해 집중적으로 진행되었는데, 이를 nightly-build라 한다.

하지만, 젠킨스는 정기적인 빌드에서 한발 나아가 서브버전, Git 과 같은 버전관리시스템과 연동하여 소스의 커밋을 감지하면 자동적으로 자동화 테스트가 포함된 빌드가 작동되도록 설정할 수 있다.

 

빌드란?

빌드는 서버에 올릴 수 있는 상태로 만드는 것

배포는 서버에 올려서 사용자가 사용 할 수 있게 하는 것

 

2). 젠킨스를 사용하면 좋은점?

 

개발중인 프로젝트에서 커밋은 매우 빈번히 일어나기 때문에 커밋 횟수만큼 빌드를 실행하는 것이 아니라 작업이 큐잉되어 자신이 실행될 차례를 기다리게 된다

코드의 변경과 함께 이뤄지는 이 같은 자동화된 빌드와 테스트 작업들은 다음과 같은 이점들을 가져다 준다.

  • 프로젝트 표준 컴파일 환경에서의 컴파일 오류 검출
  • 자동화 테스트 수행
  • 정적 코드 분석에 의한 코딩 규약 준수여부 체크
  • 프로파일링 툴을 이용한 소스 변경에 따른 성능 변화 감시
  • 결합 테스트 환경에 대한 배포작업

등 플러그인을 추가하면 더많은 기능을 사용할 수 있다.

 

3). CI CD 란?

빌드 자동화만 나오면 바로 CI CD가 나와서 정리해놓으려고 한다.

 

CI란?

  • 지속적 통합 (Continuous Integration)
  • 모든 개발이 끝난 이후 코드 품질을 관리하는것이 아닌 / 개발을 하면서 코드에대한 통합을 지속적으로 진행함으로써 품질을 유지시키는것

 

CD란?

  • 지속적 배포(Continuous Deploy 또는 Delivery)
  • 소프트웨어가 항상 신뢰 가능한 수준에서 배포될 수 있도록 지속적으로 관리하는 개념

<결론>

쉽게 보면

CI = 빌드 및 테스트 자동화

CD = 배포 자동화

반응형