CI是英文continuous integration的缩写,翻译成中文是持续集成。
CD是英文continuous delivery的缩写,翻译成中文是持续交付,也可以是continuous deployment,翻译成中文是持续部署。
CI和CD共同的两个特性,一个是continuous(持续),一个是automation(自动化)。
说到持续,持续集成,持续交付或部署,就不得不提到一个概念--集成地狱,因为CI/CD就是为了集成地狱问题的解决方案。
想象一下,一个软件开发团队,开发者1开发模块a,开发者2开发模块b,开发者3开发模块c,...,开发过程是相互独立的,在某个时间点,比如月底需要交付一个正式版本时,各个模块的开发者会集中在月底进行代码的提交合入,而由于各个模块彼此接口变动,功能划分界限不清晰等等问题,在月底合入时,会出现很多代码彼此冲突,功能冗余或者不完善等等各种集成问题,从而导致版本发布节点开发者工作量和压力非常大,甚至影响版本的交付,这就是集成地狱。
而持续集成,持续交付或者部署,是各个模块的各个特性尽可能拆成多的小的commit并持续合入代码仓,