持续集成:回顾过去的技术演进与实践

本文回顾了持续集成在软件开发中的重要性,探讨了缺乏构建生态系统带来的问题,并详细介绍了配置控制、状态记录、环境管理等关键实践,以及如何通过自动化构建和团队协作提升系统健康度。

持续集成 - 回顾过去

尽管这并非发生在十年前,但对我而言,这仍是一个很好的案例,让我学习和认识到持续集成如何为我们的工作带来增值。

我记得当时的情况就像是他们青少年时期一样:几个团队在同一个应用程序的不同模块上工作,然后一起部署。

  • 没有正式的构建流程
  • 除了需要重大里程碑部署之外,没有构建
  • 没有反馈、报告、审查等

因此,实际上没有构建生态系统。这意味着大量的沟通、成堆的故障排除、最后一刻的阻碍,以及极其不满的最终用户/利益相关者。

那么,到底出了什么问题?

  • 没有配置控制,即无法确定哪些更改将包含在发布中,也没有控制来包含或排除它们。
  • 没有状态记录,即没有整体产品的反馈或状态。
  • 没有环境管理,意味着没有人知道他们正在使用什么硬件/软件,有时甚至不知道为什么。
  • 没有任何团队合作,意味着没有指导流程、审查或问题和陷阱的可追溯性。

因此,发布日实际上是世界末日!

开发人员花了一些时间才意识到以下内容的重要性:

  • 配置识别 - 我们正在使用什么代码?
  • 配置控制 - 控制产品及其更改的发布。
  • 状态记录 - 记录和报告组件的状态。
  • 审查 - 确保组件之间的完整性和一致性。
  • 构建管理 - 管理用于构建的流程和工具。
  • 流程管理 - 确保遵守组织的开发流程。
  • 环境管理 - 管理托管我们系统的软件和硬件。
  • 团队合作 - 促进与流程相关的团队互动。
  • 缺陷跟踪 - 确保每个缺陷都可以追溯到源头

毕竟,这需要一些时间,但日常流程如下图所示。

[下载图片] (/images/2008/11/build.png)

重要的是:

  • 开发人员分布在不同地点的不同团队中。
  • 有一个SCM团队负责SCM活动,即配置识别、控制、构建管理等。
  • 所有开发人员使用一个单一的代码库。
  • 定义了产品集成流程,并在有人签入时进行检查。
  • 每小时进行一次构建,通过单元测试检查系统的健全性。
  • 每晚进行一次完整的构建,包括全面的单元测试、覆盖率报告、自动化测试以及安装程序和升级包。
  • 此外,所有以上内容都显示在FTP/HTTP站点上。FTP用于安装程序/二进制文件/归档文件的提取,HTTP用于构建/反馈等的详细视图。

所有以上内容意味着构建生态系统的强度和健康度。并且对系统有更多的信任,因为它会在过程中报告失败。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计