持续整合 Continuous Integration

持续整合将开发,测试,部署过程自动化。无论是个人开发还是团队开发,软件项目可以使用持续整合来确保重要步骤比如单元测试可以自动执行而无需手动执行。

为什么持续整合重要?

当持续整合(CI) 成为软件开发项目的一个环节,它能通过减少人工干预的步骤而显著降低部署时间。唯一的不足是开始时需要花些时间设置,接下来需要持续的维护。

自动测试

CI的另一个主要优势是在部署过程中可以将测试自动化进行。通过运行一个全面的单元测试和整合测试,部署失败可以避免。任何偶然引入并被单元测试发现的bug都会被报告并排除在部署环节。

自动化测试The automated testing on checked in source code can be thought of like the bumper guards in bowling that prevent code quality from going too far off track. CI combined with unit and integration tests check that any code modifications do not break existing tests to ensure the software works as intended.

持续整合案例

下图描述了一个持续整合和部署如何工作的全局试图:

One potential way for continuous integration to work with source control and a deployment environment.

在上图中,当新代码被提交到源代码库时,有一个hook提示持续整合服务器,新代码需要bulid(持续整合服务器也可以从源代码库拉代码,如果提示不成功)。

持续整合服务器拉代码,build,然后测试。如果所有测试通过,持续整合服务器开始部署。最终部署过程完成,重启服务和相关的部署活动。

持续整合有其他多种方式。上述只是一种相对简单的例子。

开源CI项目

有许多免费、开源的整合服务器。许多并不是由Python编写,但是可以为Python应用服务。Polyglot机构(使用超过一种语言和生态系统)经常使用单个CI服务器支持他们的所有项目,而不用考虑项目本身是用什么编程语言编写的。

Jenkins CI资源

Jenkins is commonly used as a continuous integration server implementation for Python projects because it is open source and programming language agnostic. Learn more via the following resources or on the dedicated Jenkins page.

常用持续整合资源