简介持续集成(CI)以及相关工具推荐

当前位置 :主页 > 联系我们 >
简介持续集成(CI)以及相关工具推荐
* 来源 :http://www.andreamoon.com * 作者 : * 发表时间 : 2018-05-31 02:07

  虽然并非每个软件项目都注定会获得巨大成功,但一些软件方法和最佳实践可以提高成功几率,并让开发工作更愉快。其中现在流行的一种做法是持续集成(CI,Continuous Integration)。

  持续集成最初由Grady Booch在布区方法中提出,之后成为了极限编程(extreme programming)的一部分,目的是防止集成问题堆积成为“集成(integration hell)”。

  持续集成是指不断整合项目更改并进行相应的测试,通常每天至少进行一次。马丁福勒说得很好:

   持续集成是一种软件开发实践,即团队开发经常集成他们的工作,通过每个每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

  自动化的构建、测试和部署流程可以解决软件开发项目中的许多麻烦和问题。通过可靠的方法频繁整合代码更改,可以尽早发现错误。毕竟没有人希望在demo day出现由于几个月前编写一直没有适当的机会进行合理测试而出现的任何差池。

  首先,降低集成风险。多数情况下,一个项目会有多个人单独处理任务或者一部分代码,人员越多,整合的风险越大,而调试、解决问题本身会常痛苦的,我们很可能需要大量修改代码。频繁的集成将极大减少此类问题。

  第二,保障代码质量。我们可以把精力放在业务代码和功能上,从而获得更高质量的软件。

  第三,有效的版本控制。如果有人提交的代码有问题,团队会即时收到通知,在有任何人拉取之前解决问题。

  第五,改善测试团队生活质量:) 通过不同版本和构建隔离并追踪错误可以有效减轻测试团队负担。

  第七,增强团队信心和士气。团队不必再为潜在错误可能会造成的不良后果而忧心忡忡,可以轻装上阵去创造更好的软件。

  首先版本控制系统(VCS)必不可少,我们需要可靠的方法来集中和保存项目的所有更改。

  如果我们采用的是onsite解决方案,需要有备用的服务器(至少有台虚拟机)。有一台干净的机器来构建系统非常必要。

  如果我们不想把服务器或者虚拟机搞得一团糟,可以选择一些持续集成工具和解决方案,用来整个流程并获得更强的伸缩性。

  当然从技术上来讲,持续集成工具不是必须的,就像软件开发不是必须要用IDE一样,具体怎么选择,在于我们的能力和需求。

  持续集成服务器(也称为构建服务器,又称CI服务器)是一种软件工具,它包含所有持续集成操作,并为我们构建项目提供可靠和稳定的。一般持续集成服务器具备高度可配置性和可调整性,能够为不同平台构建各种项目。

  使用持续集成服务器最好能够安装在干净的机器上,其在中立的中不受不必要的工具、变量和其他配置影响。如果实在没有物理机,可以考虑构建一个虚拟。

  另外使用开发机器而不设置虚拟,可能会导致错误的假设和结果。把应用部署到另一台机器上时,会遇到新的问题。

  持续集成服务器通常使用版本控制系统(如Subversion或Git或任何其他版本)来提取项目文件。该系统项目仓库,在代码成功提交时,会拉去更改并按照我们的定义来执行。完成任务后,持续集成服务器会向相关发送构建细节信息。检查项目的最新版本、运行构建脚本、运行测试以及发送通知是持续集成服务器的最基本功能。

  除此之外,代码分析、代码覆盖率、代码质量报告、agent pooling、pipeline、构建比较、IDE集成、第三方工具支持等功能,会让持续集成服务器更加灵活好用。

  相比硬件、软件或者工具,人的因素对于持续集成成功与否更为关键,这要求团队里的每个都能养成良好的“持续集成”习惯,例如频繁提交代码、立即修复失败构建、编写单元测试等等。

  典型的持续集成生命周期包括构建项目、单元测试、部署测试和验收测试。一旦项目成功通过了所有阶段,就可以将其部署到生产中。

  交付项目到生产中可以像其他环节一样自动完成,也可以根据业务需求手动完成。对于自动完成的情况,我们会了解到持续交付(Continuous Delivery)和持续部署(Continuous Deployment),其差异如下图所示:

  我们本来也需要构建、测试和部署系统。如果不用持续集成来管理这些流程的话,也需要其他的工具,否则手工和人力将在项目达到一定复杂度时捉襟见肘。

  一些认可能不太愿意在遗留系统上做太多改变,这种情况下,可以考虑逐步进行,现在小部分工作上使用持续集成。如果大家对效果满意,再引入落实到其他部分工作上。

  与成本及项目完成后回头解决问题的成本相比,实施持续集成的成本微不足道。

  开发者本可以把时间集中在更有价值的业务开发上,而不是把精力浪费在重复性工作中。

  即使是很小的项目也可以从透明的开发构成与集中的项目资源和构建中获益,许多在线持续集成工具设置起来非常简单。

  进一步了解请访问Rainbond官网或试用公有云(新用户7天免费)返回搜狐,查看更多