빌드/테스트 자동화 과정
을 의미하는 용어로 개발자를 위한 자동화 프로세스이며, 지속적인 통합(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 과정이 알아서 배포를 수행한다.