
빌드/테스트 자동화 과정을 의미하는 용어로 개발자를 위한 자동화 프로세스이며, 지속적인 통합(Continuous Integration)을 의미한다.
쉽게 GitHub에 특정 브랜치(master)에 새로운 커밋이 될 때 마다, 해당 코드를 바탕으로 빌드하고 사용자가 미리 만들어둔 테스트 코드를 실행하여 문제가 있는지 없는지를 체크하는 과정을 자동화 한것을 의미한다.
배포 자동화 과정을 의미하는 용어로 지속적 서비스 제공(Continuous Delivery) 또는 지속적 배포(Continuous Deployment)를 의미한다. 기존에는 빌드 후 문제가 없다고 판단되면 실제 서버든, 클라우드 환경의 서버 환경에 합쳐진 코드(빌드 된 상태의)를 올리는 과정을 하며 이를 배포한다 라고 한다. 그런데 위에서 설명한 CI의 과정이 되어 있다면, 우리는 배포 마저도 CI가 완료되는 시점에 자동으로 실행하면 된다. 이를 CD라고 한다.

CI/CD 를 도와주는 각종 오픈 소스 및 플랫폼이 궁금하다면 CI/CD 개념 및 각종 플랫폼 정리글을 통해 확인하자.
CI/CD 적용 전
1) 코드를 수정/추가 등을 하며 개발을 진행한다.
2) 각자의 코딩 컨벤션에 따라 브랜치에 push 한다.(여기서 에러가 발생했는지 아닌지 판단할 수 없음)
3) 해당 브랜치 코드에 문제가 없다고 판단되면 main branch에 병합한다.
4) 에러가 발생했다면 1)~3) 과정으로 에러를 고치고, 에러가 발생하지 않았다면 직접 배포를 진행한다.
CI/CD 적용 후
1) CI/CD 적용 전과 동일
2) push된 코드를 CI가 알아서 Build, Test, Lint(포맷팅)을 실행하고 결과를 알려준다.
3) 개발자들은 결과를 보고 에러가 난 부분을 수정한 후 main branch에 병합한다.
4) main branch를 감지하고 있던 CD 과정이 알아서 배포를 수행한다.