持续集成(CI)
共 1924字,需浏览 4分钟
·
2020-10-12 18:40
持续集成(CI)是一种软件工程实践,其中频繁且独立的更改会在添加到较大的代码库中时立即进行测试并报告。
CI旨在提供快速反馈,以便在将缺陷引入代码库时,尽快对其进行识别和纠正。
CI起源于 极限编程 范式,它是敏捷方法的子集,但原理可以应用于任何迭代编程模型。传统的开发方法(例如 瀑布模型) 也可以在构建阶段受益于CI方法的使用。持续集成通常与持续交付配合使用,对于CI / CD,将可执行代码交付生产的步骤迅速且自动化。
根据持续集成:提高软件质量和降低风险的合著者Paul Duvall所说 ,CI的最佳实践包括:
频繁的代码提交;
开发人员测试分类;
专用的集成构建机器;
持续的反馈机制;
分期构造
CI的发布可能以任意频率发生,这取决于运行它的组织和手头的项目。通常,采用CI的组织比以前的软件开发过程更频繁地发布。每个重大更改都会启动构建。开发团队采用CI的原因很多,其中包括不断收到有关软件状态的反馈。CI在开发的早期就发现了缺陷,与软件开发生命周期的后期相比,它使破坏性更小,更简单,更容易解决。
开发团队可以在CI设置中使用自动化功能来整合代码集成和测试,与手动执行这些任务相比,它可以减少查找错误的时间并提供更快的反馈。自动化工具可帮助团队在CI流程中执行常规测试,例如单元测试,应用程序编程接口(API)和功能测试。单元测试检查最小的应用程序组件。API测试评估API是否可以在其预期的请求和响应负载下可靠地执行。功能测试通常会评估较大部分的源代码,以模拟用户工作流程或功能。借助完全的CI自动化,脚本或集成引擎可以通过测试和构建来管理新代码的移动。
这种自动化方法通常是CI / CD管道和DevOps方法的组成部分。CD充当CI的扩展,而不是替代。CI专注于开发周期的构建和代码测试部分,而CD包括部署测试和配置自动化。在CD中,开发团队可以在短周期内生产和发布软件。持续部署是一个更高级的步骤,其中代码自动发布到生产环境中,供最终用户使用。
将CI纳入开发流程时,开发团队可以为组织带来有价值的收益。
与一次瀑布之类的其他开发方法相比,与一次集成更少的代码相比,CI可以更短,更少破坏性的代码集成。同样,还原的变更具有较小的破坏性,因为仅隔离的变更会立即消失。
错误检测也更容易,更快捷,因为如果出现错误,则很可能在最后一批集成代码中。随着开发人员不断添加代码库,这两个好处都是提高代码可见性的结果。
持续集成还可实现对变更的持续反馈,从而可以随着时间的推移改进产品。
开发团队使用CI软件工具来自动化部分应用程序构建并构建文档跟踪。以下是企业IT商店中常见的CI管道自动化工具的示例。CI管道中存在许多其他工具,例如版本控制,测试,构建和工件存储,这些工具太多了,在此不再赘述。
Jenkins是一个开源CI自动化服务器。詹金斯(Jenkins)可以分发测试并在众多机器上进行构建。插件扩展了Jenkins的功能,例如用于自动化单元测试和测试报告的功能。开发人员可以通过特定的URL,在版本控制系统中或预先计划的顺序系统中进行提交来创建项目构建。一旦测试了系统,Jenkins还支持使用CD部署代码的功能。CloudBees 支持在企业级使用Jenkins。
开源GitLab存储库和平台支持CI / CD。GitLab可以在多台机器上运行单元和集成测试,并且可以拆分构建以在多台机器上工作,以减少项目执行时间。该软件还支持将CD手动部署到登台环境和生产环境。GitLab还支持与Atlassian Jira,GitHub和Jenkins之类的工具集成。
JetBrains TeamCity是用于CI / CD的集成和管理服务器。利用TeamCity,开发人员可以在将更改提交到代码库之前测试代码。如果测试失败,TeamCity将发送通知。TeamCity具有Build Grids,使开发人员可以针对不同的平台和环境运行多个测试和构建。TeamCity包括对Docker,Jira和其他程序的支持。