CI/CD는 소프트웨어 개발에서 **Continuous Integration(지속적 통합)**과 **Continuous Delivery/Deployment(지속적 전달/배포)**의 약자로, 소프트웨어 개발 및 배포 과정을 자동화하는 중요한 프로세스를 의미한다.
개발자가 작업한 코드를 주기적으로 중앙 저장소에 병합하는 과정
이 과정에서 자동으로 테스트와 빌드를 수행한다.
CI 과정에서 빌드된 소프트웨어를 실제 운영 환경에 배포하는 단계
Continuous Delivery : 자동으로 소프트웨어를 준비하여 배포 승인을 요청하는 것Continuous Deployment : 승인 없이 자동으로 배포하는 것즉, CI/CD란 각각의 개발자들이 개발을 하는 개발환경을 사용자가 사용 가능한 서비스로 전달하는 모든 과정을 지속 가능한 형태로, 또 가능하다면 자동으로 해서 개발자와 사용자 사이의 격차를 없애는 것이다. 이러한 과정에는 코드를 빌드하고, 테스트하고 배포하는 활동이 있다. (참고)
CI/CD도 여러 툴들이 존재한다. 대표적으로 **
Jenkins**와 **Github Action**이 있다. 나는 CI/CD Tool로 Github Action을 사용했다. GitHub 내에서 모든 설정과 관리를 할 수 있다는 점이 매력적으로 다가왔기 때문이다.
GitHub Actions를 사용하면 자동으로 코드 저장소에서 어떤 이벤트(event)가 발생했을 때 특정 작업이 일어나게 하거나, 주기적으로 어떤 작업들을 반복해서 실행시킬 수 있다.
main 또는 release)로 push되면, GitHub Actions를 통해 소프트웨어를 빌드하고 상용 서버에 자동 배포할 수 있다.