ci持续集成是干什么的
如今,大多数软件开发都是由团队在版本控制系统中管理的一个或多个代码存储库中完成的。 各个开发人员在需要更改的代码区域上工作,并且必须决定何时将其更改提交回版本控制。
有时,代码更改很容易且几乎没有风险,因此开发人员可以进行编辑并提交,从而降低了干扰团队成员在同一代码库上工作的风险。
但是,如果团队正在开发一项需要几天,几周甚至几个月的开发的更大功能,该怎么办? 什么时候将这些代码更改签入版本控制中合适? 此外,当检入该代码以确保由开发人员团队开发的集成代码进行集成而不会产生构建错误或其他功能缺陷时,会发生什么情况?
为什么需要持续集成(CI)
一种直观的方法是将这项工作分成单独的版本控制分支。 团队决定是使用单个功能分支还是为每个开发人员创建多个功能分支。
虽然直观,但事实证明这种工作方式不是最佳的。 每个功能分支的更改都与开发的主要干线有所不同。 如果长时间使用这些功能分支,则集成可能很困难,解决冲突很耗时,并且容易出错。
希望开发和部署功能的大型团队Swift找到了一种新方法,该方法通常将变更集成在一起,然后使用自动化功能来验证构建和功能。 现在称为连续积分(CI) 。
定义了持续集成(CI)
持续集成是一种编码哲学和一组相关的实践,可推动开发团队实施小的更改并频繁检入代码以进行版本控制存储库。
由于大多数现代应用程序需要在不同的平台和工具中开发代码,因此团队需要一种机制来集成和验证其更改。 持续集成的技术目标是建立一致,自动化的方式来构建,打包和测试应用程序。 有了集成过程中的一致性,团队就更有可能更频繁地提交代码更改,从而带来更好的协作和软件质量。
持续集成(CI)如何在实践中发挥作用
持续集成是一种以过程力学和软件构建自动化为后盾的开发理念。 练习CI时,开发人员经常将其代码提交到版本控制存储库中,并且大多数团队至少每天至少提交一次代码。
其基本原理是,在较小的代码差异上识别缺陷和其他软件质量问题比在较长时期内开发出较大的问题更容易。 另外,当开发人员以较短的提交周期进行工作时,多个开发人员不太可能编辑相同的代码并在提交时需要合并。
实施持续集成的团队通常从版本控制配置和实践定义开始。 即使经常检查代码,但功能和修复都是在较短和较长的时间内完成的。 练习持续集成的开发团队使用不同的技术来控制准备生产的功能和代码。
练习CI的团队更喜欢将代码提交到单个开发分支或主干中。 如果使用了功能分支,他们宁愿看到它们寿命短并且经常合并到开发分支中。
有些用于管理功能的技术需要较长的开发时间,但仍集成到开发分支中。 一些团队还使用功能标记,这是一种配置机制,可在运行时打开或关闭功能和代码。 仍在开发中的功能在代码中包装有功能标志,并与master分支一起部署到生产环境,并在准备使用之前将其关闭。
然后,通过打包所有软件,数据库和其他组件,使构建过程本身自动化。 例如,如果您正在开发Java应用程序,则CI会将所有静态Web服务器文件(如HTML,CSS和JavaScript)与Java应用程序和任何数据库脚本一起打包。
大多数CI工具允许开发人员根据版本控制存储库中的代码提交或按定义的时间表触发按需启动的构建。 团队需要讨论最适合团队规模,预期的每日提交次数以及其他应用程序注意事项的构建计划。 最佳实践是确保快速进行提交和构建。 否则,可能会妨碍团队尝试快速编码和频繁提交的进度。
所有这些工作流程都称为CI管道 。
使用持续集成(CI)进行开发和测试
引入CI管道后,它将为开发人员建立新的工作流程。 他们在自己的“本地”环境中使用自己的编辑器或IDE编辑代码。 理想情况下,它们还具有在其本地环境上运行的运行时环境,并且可以执行一些基本的功能测试。 然后,他们进行可以轻松在其环境中运行的任何自动化单元测试。
在验证了这些基本测试之后,他们便可以提交代码。 诸如Jenkins或Travis之类的CI平台可以触发将所有代码元素打包到一个或多个已构建组件中的构建。 然后,CI平台可以执行任何静态代码分析工具,并在构建失败时向开发人员报告。
如果检测到故障,则团队成员必须Swift采取行动以研究和解决问题,因为失败的构建管道可能会中断整个团队的开发活动。 许多团队跟踪有关构建成功和失败率的捕获指标,并使用此数据来确定开发流程的改进。
打包软件后,CI工具可以帮助将内置软件交付到目标交付环境,触发交付所需的任何服务,例如重新启动应用程序服务器,并启动任何自动化测试。 这些交付步骤通常称为连续交付 ,并且集成到完全连续集成和交付(CI / CD)流水线中的测试功能是连续测试的一部分 。
练习CI / CD的团队可以更快地为用户提供功能和增强功能。 自动化和工作流程减少了编码和功能缺陷。 这种类型的工作流程还增加了整个团队之间的协作,通常可以推动更智能,更具创新性的解决方案。 这一切都始于持续集成(CI)。
ci持续集成是干什么的