Jenkins 개요
1. CI/CD란?
- 개발자가 만든 코드를 결과물로 만들어서 보여주는 일련의 과정중에는 컴파일, 빌드, 배포 단계가 있다.
1-1. 컴파일
- 개발자가 만든 프로그래밍 언어 (C/C++, Java 등...)을 기계가 이해할 수 있는 기계어로 번역하는 것이다.
- 이때 프로그래밍 언어를 기계어로 번역해주는것을 컴파일러라고 한다.
1-2. 빌드
- 컴파일된 기계어를 사용자에게 보여주기위해 소프트웨어 가공물로 만드는 행위이다.
- Java의 경우
maven
, gradle
과 같은 빌드 도구를 이용하면 소스코드를 컴파일과 함께 .jar, .war 파일로 빌드할 수 있다.
1-3. 배포
- 이렇게 만들어진 산출물을 각각의 서버에서 동작하도록 해 상품을 사용자에게 공개하는것이 배포이다.
- 이러한 과정들을 거치면서 CI/CD라는 개념이 자주 들려온다. 이를 정리해보겠다.
1-4. CI(Continuous Integration)
- 지속적 통합 이라는 뜻으로 개발을 진행하면서 품질을 관리할 수 있도록 하는것.
- 여러명이 하나의 코드에 대해서 수정을 진행해도 지속적으로 통합하면서 관리할 수 있음을 의미한다.
- CI를 적용하면 각작의 개발자가 자신의 구현해야할 기능들을 구현하고 구현이 완료 됐으면 Main 브랜치에 병합하기만 하면 된다. 병합한 뒤에는 코드가 빌드가 잘 되는지, 올바르게 동작하는지 테스트하며 코드에 버그가 있다면 해결한다.
- 이러한 일련의 과정들을 지속적으로 반복할 경우, 또는 프로젝트 크기가 클 경우에는 반복작업들이 많아져 피로도가 높다.
- 이를 자동화 시킬경우 개발자가 빌드와 테스트를 직접 하지 않아도 수정한 코드를 브랜치에 병합하기만 하면 자동으로 빌드와 테스트를 검증 할 수 있다.
- 자동화 시킬 경우 개발자가 단위별로 구현한 부분을 병합할 때마다 자동화된 빌드와 테스트가 트리거 되어 실행된다. 결과를 통해 어떤 부분에서 문제가 있는지 배포 전에 확인할 수 있다.
1-4-1. CI의 순서
- 개발자가 구현한 코드를 기존 코드와 병합
- 병합된 코드가 올바르게 동작하고 빌드되는지 검증
- 테스트 결과에 문제가 있다면 수정하고 다시 1번으로 돌아간다. 문제가 없으면 배포를 진행한다.