Jenkins
2020. 3. 19. 14:50ㆍ배포
반응형
Jenkins란
Jenkis란 소프트웨어 개발 시 지속적으로 통합 서비스를 제공하는 툴입니다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해줍니다. 그리고 프로젝트 빌드, 테스트 실행 배포 등의 통합을 자동화하는 기능도 포함하고 있습니다.
Jenkins의 이점
- 프로젝트 표준 컴파일 환경에서의 컴파일 오류 검출
- 정적 코드 분석에 의한 코딩 규약 준수여부 체크
- 결합 테스트 환경에 대한 배포작업
- 각종 배치 작업의 간략화: 과거에는 CLI(Command Line Interface)로 실행되던 작업들이 Jenkins덕분에 웹 인터페이스로 쉽게 이용할 수 있게 됨
- Build 자동화의 확립: Java는 maven과 gradle이라는 빌드툴을 사용하는 경우가 많은데, Jenkins와 연동하여 빌드 자동화를 통해 프로젝트 진행의 효율성을 향상시킬 수 있음
- 자동화 테스트: 젠킨스는 Git과 같은 버전 관리 시스템과 연동하여 코드 변경을 감지하고 자동화 테스트를 수행
- 빌드 파이프라인 구성: 2개 이상의 모듈로 구성되는 프로젝트의 경우, 레이어드 아키텍처가 적용되어 있고 이에 따른 빌드 파이프라인 구성이 필요합니다. 예를 들자면 도메인 -> 서비스 -> UI와 같이 각 레이어의 참조관계에 따라 순차적으로 빌드를 진행해야 합니다. 이러한 파이프라인의 구성은 선형 뿐만 아니라 간단한 스크립트를 통해 매우 복잡한 제어까지도 가능하게 합니다.
Jenkins의 CI 과정

이미지 출처: http://itnovice1.blogspot.com/2019/02/jenkins-jenkins.html
- 개발자들은 GitHub를 통해 코드를 공유
- Jenkins는 Github에서 코드를 가져와서 오류를 체크
- 의존 관계에 있는 라이브러리들을 다운 받음
- 테스트 코드가 있으면 테스트를 실행
- 테스트에 성공할 경우, 빌드 후 실서버에 재배포
- Jenkins는 빌드, 테스트, 배포 등을 직접 실행하는 것이 아니라 실행시키는 역할을 함
- workflow를 제어하는 것이지, 소스를 가져오거나 Maven을 직접 실행하는 것이 아님
반응형
'배포' 카테고리의 다른 글
GitHub Webhook을 이용해 Jenkins Job을 자동 실행하기 (0) | 2020.03.31 |
---|---|
Git Flow (0) | 2020.03.24 |
배포와 CI/CD (0) | 2020.03.19 |