持续集成CI
持续集成说明
持续集成是一种软件开发实践。采用持续集成时,开发人员会定期将代码变更合并到一个中央存储库中,之后系统会自动运行构建和测试操作。
持续集成通常是指软件发布流程的构建或集成阶段,需要用到自动化组件(例如 CI 或构建服务)和文化组件(例如学习频繁地集成)。持续集成的主要目标是更快发现并解决缺陷,提高软件质量,并减少验证和发布新软件更新所需的时间。
为什么需要持续集成?
过去,一个团队的开发人员可能会孤立地工作很长一段时间,只有在他们的工作完成后,才会将他们的更改合并到主分支中。这使得合并代码更改变得困难而耗时,而且还会导致错误积累很长时间而得不到纠正。这些因素导致更加难以迅速向客户交付更新。
持续集成可以帮助开发人员更加频繁地(有时甚至每天)将代码更改合并到共享分支或“主干”中。一旦开发人员对应用所做的更改被合并,系统就会通过自动构建应用并运行不同级别的自动化测试(通常是单元测试和集成测试)来验证这些更改,确保这些更改没有对应用造成破坏。这意味着测试内容涵盖了从类和函数到构成整个应用的不同模块。如果自动化测试发现新代码和现有代码之间存在冲突,持续集成可以更加轻松地快速修复这些错误。
持续集成的工作原理是什么?
采用持续集成时,开发人员可以使用诸如 Git 之类的版本控制系统,将更新频繁提交到共享存储库中。在每次提交前,开发人员可以选择在集成前对其代码执行本地单元测试,作为额外的验证层。持续集成服务在新代码更改上自动构建和运行单元测试,以立即发现任何错误。
采用持续交付时,系统会自动构建、测试并准备代码变更,以便发布到生产环境中。持续交付通过在构建阶段后将所有代码变更部署到测试环境和/或生产环境中,实现对持续集成的扩展。
持续集成的优势
1.提高开发人员的工作效率
持续集成可将开发人员从手动任务中解放出来,并且鼓励有助于减少发布到客户环境中的错误和缺陷数量的行为,从而提高团队的工作效率。
2.更快发现并解决缺陷
通过更频繁的测试,您的团队可以在缺陷稍后变成大问题前发现并解决这些缺陷。
3.更快交付更新
持续集成有助于您的团队更快、更频繁地向客户交付更新。
Jenkins
介绍
Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。前身是Hudson,是一个可扩展的持续集成引擎。可用于自动化各种任务,如构建,测试和部署软件。
主要用于:
- 持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。
- 监控一些定时执行的任务。
Jenkins自诞生之日起,至今已发展了近20年,社区、生态都已经非常完善了,光是插件就有1500+,基本上,你想要的功能在Jenkins中都能找到。国内不少公司都有在使用,很多公司还基于Jenkins开发了自己的插件,从而与内部自研系统进行集成。
优点
1.持续集成和持续交付
作为一个可扩展的自动化服务器,Jenkins 可以用作简单的 CI 服务器,或者变成任何项目的持续交付中心。
2.简易安装
Jenkins 是一个基于 Java 的独立程序,可以立即运行,包含 Windows、Mac OS X 和其他类 Unix 操作系统。
3.配置简单
Jenkins 可以通过其网页界面轻松设置和配置,其中包括即时错误检查和内置帮助。
4.插件
通过更新中心中的 1000 多个插件,Jenkins 集成了持续集成和持续交付工具链中几乎所有的工具。
5.扩展
Jenkins 可以通过其插件架构进行扩展,从而为 Jenkins 可以做的事提供几乎无限的可能性。
6.分布式
Jenkins 可以轻松地在多台机器上分配工作,帮助更快速地跨多个平台推动构建、测试和部署。