CI/CD " 개발자들이 동시에 작업한 코드 변경사항을 통합하고, 이를 실제 환경에 지속적으로 배포하는 프로세스 "
CI : Continuous Integration 지속적 통합
☞ 여러 명의 많은 개발자들이 코드 베이스를 계속해서 통합
CD : Continuous Delivery(또는 Continuous Deployment) 지속적 배포
☞ 소스가 항상 배포 가능한 상태를 유지하는 것을 의미, 소스를 사용자가 사용 가능한 환경에 배포하는 것을 자동화
| CI/CD Pipeline | |||
| 코드 작성 --> | 빌드 --> | 테스트 --> | 배포 |
<용어정리>
*** 배포 : 완성된 실행 가능한 파일 (jar 또는 war) 을 사용자가 접근할 수 있는 환경에 배치하고 실행하는 것
( + 이후 모니터링, 유지보수)
*** 빌드 : 우리가 만든 소스코드들(.java)를 컴퓨터에서 이해할 수 있는 바이너리코드(.class)로 변환
기계가 바로 읽고 실행할 수 있는 압축된 파일(jar 또는 war)로 패키징
*** 파이프라인 : CI/CD 파이프라인을 젠킨스에 구현하기 위한 일련의 플러그인들의 집합이자 구성
(어떠한 업무를 하는 단계, 절차, 흐름)
Jenkins(젠킨스) CI/CD를 위한 오픈 소스 도구 중 하나 -> 소프트웨어 개발 생명주기를 자동화 한다
- 젠킨스는 단순서버이며 CI/CD를 위해서는 각종 플러그인들을 설치해서 플러그인을 통해 CI/CD를 수행하게 된다
- 젠킨스는 빌드, 테스트, 배포를 자동화하여 소프트웨어 품질과 개발 생산성을 높일 수 있다
- 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유영역에 있는 저장 소(Git)에 빈번히 업로드 함으로써 지속적 통합이 가능하도록 해준다
- Credentials Plugin : 각종 리소스(Git, SSH, AWS)에 접근하기 위해서 여러 가지 중요 정보들을 저장해주는 플러그인
- Git Plugin : Git에 대한 소스코드를 긁어와서 빌드할 수 있도록 도와주는 플러그인
- Pipeline : 핵심 기능인 파이프라인마저도 플러그인
- Docker plugin and Docker Pipeline : Docker agent를 사용하고 jenkins에서 도커를 사용하기 위한 플러그인
보통 젠킨스를 설치할 때, 기본 옵션을 선택하면 기본 플러그인( Credentials Plugin, Git Plugin, Pipeline, ...)은 설치가 되고 따로 플러그인을 설치할 수 있다
| 개발자 코드작성 (Git에 Push) |
→ | Git Repository 변경 |
→ | ![]() 변경사항 감지 |
→ | 빌드 |
| 테스트 | ||||||
| 배포 |
