持续集成CI 属于幕后的基础工作,并不引人注目。却是高效开发、测试、部署的推进器。
用过CI的人,都能体会到一致的、可重复的构建过程所带来的好处。
极大减少了低级任务时间占用,让程序员专注于业务开发。
持续集成CI的价值在于:
- 减少风险。
- 减少重复过程。
- 在任何时间、任何地点生成可部署的软件。
- 增强项目的可见性。
- 对开发团队的软件产品建立起更强大的产品信心。
减少风险
在一天中进行多次集成,有利于检查缺陷,了解软件的健康状况,减少假定。
- 缺陷的检测和修复变得更快:因为CI每天多次进行集成并执行测试和审查,所以在缺陷引入时(例如,在代码检入版本控制库时)就能充分暴露,提前释放项目风险。
- 软件的健康程度可以测量:通过在自动集成过程中包含持续的测试和审查,可以随时追踪产品的健康度。
- 减少假定:通过在一致的环境中不断使用相同的过程和脚本重复构建和测试软件,可以减少不实的假定。
CI提供了一张安全网,降低了缺陷进入代码中的风险。例如:
- 没有一致的、可部署的软件。
- 很晚才发现缺陷。
- 低品质的软件。
- 缺少项目可见性。
减少重复过程
减少重复过程可以节省时间、费用和工作量。
这些重复过程可能在任何环节发生,包括代码编译、数据库集成、测试、审查、部署和反馈。
通过自动化的CI,更加能够确保:
- 每次都以一致、相同的方式执行该过程。
- 遵守标准流程。例如,构建脚本中包含集成,审查、测试、部署等步骤。
- 每次将变更提交到版本控制库中,就会触发这些过程。
生成可部署的软件
CI最大的好处是,可以在任何时间发布可以部署的软件。
每提交一次变更到版本库,会触发CI进行集成,审查、部署,充分提前暴露了缺陷,CI敏捷反馈后,开发人员可以及时修复,保证了软件产品的健康度。
没有做到持续交付的传统项目,开发、测试是阶段性的,全部开发完才开始统一集成,测试,缺陷暴露比较晚。
而在投产交付之前,时间尤为关键而宝贵,集中暴露的缺陷,来不及修复,会延迟产品的发布。
在急于完成任务时引入新的缺陷,最后可能导致项目失败。
增强项目的可见性
CI 提供最新、真实、有力的数据来支持决策。让决策站得住、有说服力。若要人工收集这些信息,既耗时,又增加工作负担。导致信息从来不会被收集。
CI 可以带来如下的积极效果。
- 健康度可见:CI系统即时反馈当前的构建状态和品质指标。还可以显示缺陷率和功能完成情况的统计。
- 有效的决策:根据各项健康指标,制定的决策是高效、切实可行的。
建立起更强大的产品信心
CI 实践能够在开发软件产品时带来更大的信心。
每提交一次变更到版本库,会触发CI进行集成,审查、部署,充分提前暴露缺陷。提前缓解项目风险。
CI让软件健康度对全体项目组可见。时刻做到心中有数。
以上内容,参考《持续集成》一书。