【名词解释】CI(持续集成) 和 CD(持续交付)


持续集成 CI(Continuous integration)


 定义

  是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。

  每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。

 措施

  1、减少风险  (多次集成有利于尽快发现集成缺陷)

  2、减少重复过程  (节省时间、费用和工作量)

  3、任何时间、任何地点生成可部署的软件  

  4、增强项目的可见性   (有效决策、构建趋势)

  5、建立团队对开发产品的信心  (构建结果成功率)  

要素

  1.统一的代码库   2.自动构建   3.自动测试   4.每个人每天都要向代码库主干提交代码   5.每次代码递交后都会在持续集成服务器上触发一次构建   6.保证快速构建   7.模拟生产环境的自动测试   8.每个人都可以很容易的获取最新可执行的应用程序   9.每个人都清楚正在发生的状况   10.自动化的部署  

原则

  1. 所有的开发人员需要在本地机器上做本地构建,然后再提交的版本控制库中,从而确保他们的变更不会导致持续集成失败。   2. 开发人员每天至少向版本控制库中提交一次代码。   3. 开发人员每天至少需要从版本控制库中更新一次代码到本地机器。   4. 需要有专门的集成服务器来执行集成构建,每天要执行多次构建。   5. 每次构建都要100%通过。   6. 每次构建都可以生成可发布的产品。   7. 修复失败的构建是优先级最高的事情。   8. 测试是未来,未来是测试 

持续交付 CD (Continuous Delivery)


定义

  让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以发布的状况

目标

  目标在于让软件的构建、测试与发布变得更快以及更频繁。这种方式可以减少软件开发的成本与时间,减少风险。