CI는 지속적 통합이라는 뜻으로 개발을 진행하면서도 품질을 관리할 수 있도록 하는 것으로 여러 명이 하나의 코드에 대해서 수정을 진행해도 지속적으로 통합하면서 관리할 수 있음을 의미한다.
CI 전에는 개발을 진행하면서 코드가 정상적으로 동작하는지 정상 동작 확인을 할수가 없었다.
빌드 후 배포가 된 후에 정상적으로 동작되는지 항상 테스트를 진행 할 수 있었다.
즉 개발자 개발 단위 별로 자동화 테스트를 진행하여 자신의 코드 및 예상 동작이 정상적으로 동작되는지 확인이 가능하고, 정상적으로 빌드가 되는지도 확인할수 있음으로 지속적으로 개발을 하면서 테스트가 가능하고 통합까지 가능해 진다.
이제 지속적 통합을 거친 코드에 대해서 신뢰할 수 있고 바로 배포할 수 있다.
CD는 지속적 배포로 소프트웨어가 항상 신뢰 가능한 수준에서 배포될 수 있도록 관리하자는 개념으로 지속적 제공(Continuous Delivery)로 사용되기도 한다.
지속적 제공은 CI를 통해서 새로운 소스코드의 빌드와 테스트 병합까지 성공적으로 진행되었다면, 빌드와 테스트를 거쳐 github과 같은 저장소에 업로드하는 것을 의미한다.
지속적 배포는 이렇게 성공적으로 병합된 내역을 저장소뿐만 아니라 사용자가 사용할 수 있는 배포환경까지 릴리즈하는 것을 의미한다.
지속적 배포에서는 지속적 통합을 통해 빌드한 소스코드를 테스트 가능한 알파나 베타 버전으로 만든다. 이 버전에서 테스트를 수행해 문제가 발생하면 수정한 뒤 정식 버전으로 배포를 진행한다.