Jenkins
- CI/CD 툴
CI/CD - 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법
Continuous Integration(개발자를 위한 자동화 프로세스인 지속적인 통합하는 것)
Continuous Delivery(지속적인 서비스 제공 및 지속적인 배포가능한 상태를 유지하는 것)
1. 자동화된 방식으로 연속적인 데이터 통합 작업을 실행할 수 있는 Java 기반 오픈 소스 서버입니다.
2. 데이터 통합을 촉진하고 소프트웨어 프로젝트를 위한 데이터의 안전한 전달을 보장합니다. 또한 프로젝트 구축, 테스트 및 배포와 관련된 다양한 작업을 자동화합니다.
다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유영역에 있는 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해준다.
<젠킨스와 같은 CI툴이 등장하기 전에는 일정시간마다 빌드를 실행하는 방식이 일반적이었다. 특히 개발자들이 당일 작성한 소스들의 커밋이 모드 끝난 심야 시간대에 이러한 빌드가 타이머에 의해 집중적으로 진행되었는데, 이를 nightly-build라 한다.>
하지만, 젠킨스는 정기적인 빌드에서 한발 나아가 서브버전, Git 과 같은 버전관리시스템과 연동하여 소스의 커밋을 감지하면 자동적으로 자동화 테스트가 포함된 빌드가 작동되도록 설정할 수 있다.
젠킨스는 Subversion이나 Git과 같은 버전관리시스템과 연동하여 코드 변경을 감지하고 자동화 테스트를 수행하기 때문에 만약 개인이 미처 실시하지 못한 테스트가 있다 하여도 든든한 안전망이 되어준다. 제대로 테스트를 거치지 않은 코드를 커밋하게 되면 화난 젠킨스를 만나게 된다.
젠킨스가 주는 이점
코드의 변경과 함께 이뤄지는 이 같은 자동화된 빌드와 테스트 작업들은 다음과 같은 이점들을 가져다 준다.
- 프로젝트 표준 컴파일 환경에서의 컴파일 오류 검출
- 자동화 테스트 수행
- 정적 코드 분석에 의한 코딩 규약 준수여부 체크
- 프로파일링 툴을 이용한 소스 변경에 따른 성능 변화 감시
- 결합 테스트 환경에 대한 배포작업
각종 배치 작업의 간략화
순수한 개발 작업 이외에 DB셋업이나 환경설정, Deploy작업과 같은 단순 작업에 시간과 노력을 들이는 경우가 빈번하다. 이터베이스의 구축, 어플리케이션 서버로의 Deploy, 라이브러리 릴리즈와 같이 이전에 CLI로 실행되던 작업들이 젠킨스 덕분에 웹 인터페이스로 손쉽게 가능해졌다.
Build 자동화
자동화 테스트
코드 표준 준수여부 검사
빌드 파이프라인 구성
오픈 소스
Web UI
jenkins 도 Web UI를 제공한다. 그러나 배치 잡 스케쥴링에서는 airflow UI 가 더 직관적이고 편하다는 의견이 많다.
참조 : https://ict-nroo.tistory.com/31
댓글