CI/CD란?
CI(Continuous Integration) 지속적인 통합
빌드, 테스트 자동화
1. 빌드(Build)
2. 테스트(Test)
3. 통합(Merge)
✔ CI 적용 전 : 개발을 마치고 배포 후 오류를 확인했다.
✔ CI 적용 후 :
- 코드 변경 사항을 정기적으로 빌드, 테스트하여 공유 레포지토리에 통합되는 과정을 통해 품질을 유지하면서 개발을 진행한다.
- 여러 명이 하나의 코드에 대해서 수정을 진행해도 지속적으로 통합하면서 관리 가능하다.
→ ⌚ 하지만, 개발자가 직접 코드를 병합하고 빌드, 테스트를 검증하는 것은 시간이 많이 소요됨 ≫ 자동화
CI 순서
1. 개발자가 구현한 코드를 기존 코드와 병합
2. 변합된 코드가 올바르게 동작하고 빌드되는지 검증
3. 테스트 결과에 문제가 있다면, 수정하고 1로 감.. 문제 없다면 배포
CD(Continuous Delivery / Continuous Deployment) 지속적인 전달 / 지속적인 배포
배포 자동화
1. 배포(Deploy)
✔ CI를 통해서 새로운 소스코드의 빌드와 테스트 병합까지 성공적으로 진행되었다면, 빌드와 테스트를 거쳐 github과 같은 저장소에 업로드하는 것을 의미한다.
CI(통합)과 CD(배포)를 나누는 이유?
테스트가 실패 했을 때 배포되는 것을 방지하기 위해
CI/CD 도구
1. Jenkins
Jenkins는 중앙 빌드 및 지속적인 통합 프로세스가 가능하며, Windows, macOS 및 기타 Unix 계열 운영 체제용 패키지가 포함된 독립형 Java 기반 프로그램이다.
수백개의 플러그인을 사용할 수 있는 Jenkins는 소프트웨어 개발 프로젝트의 빌드 파이프라인 구성, Build 자동화의 확립, 배포 및 테스트 자동화 등을 지원한다.
홈페이지: https://jenkins.io/
2. GitHub Actions
3. circleci
코드 구축, 테스트에서 배포에 이르기까지 사용자의 파이프라인 전반에 걸쳐 신속한 소프트웨어 개발 및 게시를 지원하는 CI/CD 자동화 도구이다. CircleCI를 GitHub, GitHub Enterprise 및 Bitbucket과 통합하여 사용할 수 있다.
홈페이지: https://circleci.com/
등등..
참고 링크
'공부 > Infra' 카테고리의 다른 글
[Docker] Docker Hub Image 활용(Nginx, MySQL) (1) | 2023.10.11 |
---|---|
[Jenkins] CI/CD, Pipe Line 작성 및 설정, 빌드자동화 (1) | 2023.10.10 |
[linux] 프로그램 설치(git, node, java, mysql) (0) | 2023.10.06 |