개발부터 배포까지의 전체 WorkFlow
CICD는 Continuous Integration / Continuous Deployment 의 약자이다.
한국어로 하면 지속적인 통합 과 지속적인 배포 이다. Continous 즉 지속적이라는 단어는 바로 자동화를 통한 지속을 이야기하고 CICD 시스템은 빌드, 테스트 그리고 배포를 자동화 함으로서 개발자들의 생산성을 높이고 (개발에만 신경쓸 수 있으므로) 배포를 더 빠르게 그리고 더 자주 할 수 있도록 한다.
이렇듯 더 빠르고 더 자주하는 배포를 바로 지속적인 배포라고 표현하는 것이다.
CI는 지속적인 통합으로 여기서 Integration (통합)은 바로 개발자들이 작업한 코드가 통합되어서 하나로 합쳐지는것을 이야기한다. 즉, Git 환경에서는 개발자들이 구현한 코드를 담고 있는 feature branch들이 develop branch에 머지되어 스테이징 서버에 배포(혹은 실제 서버에 배포 되지 않더라도 배포 될 수 있는 package나 artifact 형태로 생성)되는 것을 말한다.
Continuous Deployment는 이름 그대로 지속적인 배포를 뜻한다. Continuous Integration의 다음 부분들이 자동화되는 것이다. 앞서 살펴본 CI 과정을 거치면 최신 코드들이 develop 브랜치에 merge가 되어 있을것이다. 이제 실제 유저들이 사용할 수 있도록 배포되려먼 production 서버에 배포가 되어야 한다. Production 서버의 배포까지 이루어 지기 위해서는 그 전에 많은 테스트들이 이루어져야 한다.
CICD의 CD는 Continuous Deployment의 약자이지만, Continuous Deployment외에도 Continuous Delivery 로 구현될 수 도 있다. Continuous Delivery 와 Continuous Deployment 의 차이는 바로 production 배포까지 모두 100% 자동으로 이루어 지는지, 아니면 production 배포는 사람의 승인을 거친 후에 이루어 지는지에 있다.
Jenkins
Travis CI
Circle CI
Github Action
등이 있다.