浅析持续集成(Continuous Integration)

2020-01-04  本文已影响0人  怕水河马

——大型软件开发的效能提升之路

持续集成是本世纪初提出的一种软件大规模开发的快速交付模式。其核心内容在于快速提交、快速测试、快速失败以及快速修复。团队的开发人员,将一个软件的代码提交到中心代码仓库后,通过自动化的方式自动进行代码检测、单体测试以及集成测试等,并第一时间将结果告知团队人员,如果出现异常,则提示团队人员快速修复问题。通过这种快速循环的方式,保证团队能够在较短时间内,快速交付需求。这样一个完整的过程,被称之为持续集成。

一、为什么要做持续集成

从大学时期,我们就学习到,现代的软件开发已经不是单纯的个人技术叠加,而是从个人行为转化为了团队行为,从单纯的技术堆叠转化为了体系化的工程构建。而软件开发工程化带来的核心诉求就是对于目标、风险和成本的管控。

这里只有目的是正向因素,而风险和成本都是负向因素。

我们目标可以包括:

需求响应

产品交付

用户支持

我们的风险包括:

系统集成失败

代码冲突

问题不能在开发阶段暴露

……

我们的成本包括:

缓慢的构建和部署过程

冲突的构建和部署环境

研发人员之间的理念冲突

……

而这些复杂的问题,都必须通过软件工程这个过程来尽量放大正向因素,降低和消除负向因素,正是因为这样的原因,才发展出了现在的CI理论。

二、如何做CI

既然已经明确了做CI的含义和目的,那么如何做CI就非常清晰了。简而言之,CI就是通过标准化的流程设计和实施,最大化软件工程的正向因素的比重,最小化软件工程中的负向因素,以求达到最高效能结果的过程。

具体如何执行CI,针对不同的应用开发诉求,其采取的具体方式是具有差异性的,但从大的方面来说,都应该包含以下几个方面的内容:

灵活的代码管理机制;

严格的代码和应用包的提交流转体系;

隔离的独立开发构建环境和模式支撑;

高效自动的构建和测试机制;

自动化的版本管理机制;

严格被约束的应用发布管理机制;

通过以上的策略,我们可以做到:

把一个无序软件开发流程约束到一个严密可控的高效流程管道中;

流程的每一个节点都具有其特定的职责意义;

将软件开发中不可预知的各种风险和成本透明化;

提前暴露问题;

产品信息最大限度对所有人透明化;

工程人员间沟通成本最小化;

CI的过程就是标准化的过程,而这过程如何实现并没有标准定义,就如果标准的建立和实现的差异一样,如何实现这样的标准,每个软件工程的参与者都是可以共建的。

三、常见的持续构建工具

狭义的持续构建,常见的工具如下:

Jenkins

Travis

Codeship

Strider

几种工具各有优缺点,通常我们使用Jenkins。

从广义的来讲,我们可以以以下这些工具来完成CI过程:

Git

Jenkins

Sonar

包管理系统

自动化测试工具

版本管理系统

参考文献:
Continuous Integration
浅谈持续集成

上一篇 下一篇

猜你喜欢

热点阅读