CI/CD
- CI : Continuous Integration (지속적인 통합)
- 개발자들이 자기들의 개발을 중앙 레포지토리에 올려 테스트를 하고, 다른 개발자들의 코드에 영향이 가지 않게 해야함
- 개발자들의 코드 충돌을 막아주는 것
- CD : Continuous Deployment (지속적인 배포)
- 개발자들은 수많은 개발과 버그를 수정함 지속적으로 프로그램을 배포함으로써 사용자가 불편함을 느끼지 못하도록 서버의 다운, 프로그램 일시 중지되는 현상을 막기 위해 도입한 개념
- 많은 부분들이 자동화
CI/CD의 장점
- 자동화 시스템 (Automation) - 테스트
- Incremental Change
(A, B, C 기능을 구현할때 A를 먼저 끝내고 테스트, 그다음 B로 이렇게 점점 프로그램을 수정시키는 것을 말함)
CI/CD - 중앙 리포지토리(Repository)
- Github
- Local & Mater branch
- 로컬에서 테스트 후 마스터 브랜치로 머지
CI/CD - 배포준비 및 배포
- 배포 준비
- 테스트 통과 후 마스터 브랜치에 코드가 머지되면 배포를 준비
- 배포
CI의 순서
- 개발자가 구현한 코드를 기존 코드와 병합한다.
- 병합된 코드가 올바르게 동작하고 빌드되는지 검증한다.
- 테스트 결과 문제가 있다면 수정하고 다시 1로 돌아간다. 문제가 없다면 배포를 진행한다.
CD
-
CD은 CI를 통해서 새로운 소스코드의 빌드와 테스트 병합까지 성공적으로 진행되었다면, 빌드와 테스트를 거쳐 github과 같은 저장소에 업로드하는 것을 의미한다.
-
지속적 배포는 이렇게 성공적으로 병합된 내역을 저장소뿐만 아니라 사용자가 사용할 수 있는 배포환경까지 릴리즈하는 것을 의미한다.
-
지속적 배포에서는 지속적 통합을 통해 빌드한 소스코드를 테스트 가능한 알파나 베타 버전으로 만든다. 이 버전에서 테스트를 수행해 문제가 발생하면 수정한 뒤 정식 버전으로 배포를 진행한다.
https://tecoble.techcourse.co.kr/post/2021-08-14-ci-cd/
https://www.inflearn.com/course/aws-%EC%9E%85%EB%AC%B8/dashboard