어플리케이션 개발 단계부터 배포 때까지 모든 단계들을 자동화를 통해서 조금 더 효율적이고 빠르게 사용자에게 빈번이 배포할 수 있도록 만드는 것
버그 수정이나 새로 만드는 기능들이 매일 Repo에 주기적으로 빌드되고 테스트가 되어서, 마지막에 merge되는 것
최대한 작은 단위로 나누어서 개발하고 통합하는 것이 중요
통합을 위한 단계 (빌드, 테스트, 머지)의 자동화
주기적으로 머지된 코드의 변경사항이 자동으로 빌드가 되어서, 코드 변경 사항 이후에도 빌드가 성공적으로 되었는지 확인이 되어야한다. 변경 이후 기존 시스템에 다른 버그를 초래하지는 않았는지 자동으로 테스트까지 되어야한다.
CI 단계를 거쳤다면, 배포(Release)할 준비 과정을 거친다. 준비 과정 중에 준비 상태를 개발자 혹은 검증팀이 검증을 한 다음에 배포결정이 이루어지고나서! 수동적으로 배포 하는 것을 Continoous Delivery라고 한다.
배포 준비가 되자마자 자동으로 사용자에게 배포할 수 있도록 자동화 해놓는 것이 Continoous Deployment
최종단계가 자동화냐 아니냐에 따라 나뉘어진다.
회사마다 어느정도의 / 얼마만큼의 자동화를 했느냐가 다르기 때문에 CI/CD라고 해서 모든 회사가 같은 프로세스를 갖는 것이 아니다.
개발자가 작은 단위로 기능을 나누어서 주기적으로 Main Repo에 머지를 하면, 자동으로 빌드를 하고 테스트 과정을 거쳐서 Release 준비를 한다. 여기서 수동적(Delivery)으로 또는 자동적(Deployment)으로 최종 배포를 거치게 된다.