[]深入了解CI/CD:工具、方法、环境、基础架构的全面指南( 四 )


更好的方法是使部署与发布解耦 。 尽管这两个词经常互换使用 , 但它们是两个独立的过程 。 部署意味着将软件版本安装到任何环境(包括生产环境)中 。 它不一定必须与发布相关联 。 另一方面 , 发布意味着向客户群提供新功能 。 在整个功能开发过程中频繁进行生产部署的目的是降低服务中断的风险 , 该风险由IT部门承担 。 另一方面 , 何时向客户展示新功能应该是业务决策 , 而不是技术决策 。
部署周期长会决定新功能发布的频率 。 如果IT可以按需部署 , 那么公开新功能的速度应该成为业务和市场营销的决定 。
结 论
总而言之 , CI要求将代码连续集成到代码库中 , 以在发生错误时捕获错误 , 从而最大程度地减少返工 。 要实现这种方法 , 需要三个工具:版本控制 , 以跟踪所有更改并使整个团队都可以使用最新的源代码版本;master , 负责自己分支的开发人员每天合并更新;部署流水线将触发一系列测试 , 基本上是自动进行QA 。
CD扩展了CI , 以验证代码是否处于可部署状态 , 并自动将其释放到生产环境中 。 为此 , 需要一个成熟的DevOps组织 , 该组织必须先掌握CI , 然后才能尝试使用CD 。
如果实施得当 , CI(/ CD)将大大提高你的IT团队的生产力 。 你的系统或应用程序在不断改进 , 同时将部署风险降至最低 , 从而增强了生产力和员工满意度的积极循环 。 此外 , 快速推出新功能和更新可推动创新 , 进而更快 , 更频繁地为用户带来价值 。 显然 , 随着越来越多的组织采用这些DevOps方法 , 由于传统方法无法与CI / CD竞争 , 因此对那些没有采用DevOps方法的企业 , 压力会越来越大 。
附录:部署流水线测试套件

  • 集成测试检查应用程序如何与其他应用程序和服务交互 , 以确保代码与这些依赖项正确交互 。 远程服务的虚拟或模拟版本可用于准确地重新创建生产环境 。
  • 验收测试会验证是否满足业务需求 , 以确保功能或应用程序为最终用户提供所需的价值 。
  • 性能测试可验证该应用程序在类似生产的负载下如何在整个堆栈(代码、数据库、存储、网络、虚拟化)中工作 。 由架构决策或网络、数据库、存储或其他系统的意外限制引起的问题应在此处解决 。
  • 非功能测试包括可用性、可伸缩性、性能、容量、安全性等 。 这些要求取决于环境的正确配置 。 测试将验证环境是否已正确构建和配置 。
  • 冒烟测试验证该应用程序可以连接到所有支持系统 , 例如数据库、服务或信息传递系统;冒烟测试通常是手动的 。

也有自动安全性测试以及探索性和其他手动或资源密集型测试 。 我们的目标是尽早捕获更多错误 , 并使用这些更耗时的测试来验证高层次的需求 , 并将产品完全集成到尽可能接近生产的环境中 。


推荐阅读