《持续交付》 - 部署流水线解析

一 什么是部署流水线


部署流水线是指软件从版本控制库到用户手中这一过程的自动化表现形式。我们知道软件的每一次变更都会经历一个复杂的流程才能发布,这一流程包括软件的构建以及后续的一系列的测试和部署,而部署流水线相当于是在给这一过程进行建模。

书中说到创建一个新产品的抽象价值流程应该是:

  1. 产品的可行性评估
  2. 产品探索
  3. 产品计划与评估
  4. 开发
  5. 最后的测试与审核
  6. 发布

对于构建一个部署流水线来说,部署流水线只关注从开发到发布的价值流,这一流程的序列图如下:

序列图

二 部署流水线的相关实践


1、只生成以此二进制包

  • 二进制包应该只在构建流水线的提交阶段生成一次
  • 避免将二进制包提交到版本库中

2、对不同环境采用同一部署方式

  • 将会变动和不会变动的东西分离

3、对部署进行冒烟测试
4、向生产环境的副本中部署

  • 尽量保持开发环境或测试环境和生产环境相同。

5、每次变更都要立即在流水线上传递
6、只要有环节失败,就停止整个流水线

三 提交阶段


每次的提交的测试通过了, 那么当前这个版本就被视为一个候选发布版本。一般来说,提交阶段分为以下几个步骤:

  • 编译代码
    如果代码编译失败,那么就不需要在进行下面的步骤了。
  • 运行一套提交测试
    提交测试包含大部分的单元测试和一些其它类型的错误(平时做测试时容易失败的相关测试)
  • 为后续阶段创建二进制包
  • 执行代码分析来检查代码的健康状况
  • 为后续阶段做准备

做了上述的几个步骤后,我们还需要关注一些非功能性的一些特性:

  • 测试的覆盖率
  • 重复代码的数量
  • 圈复杂度
  • 输入耦合度和输出耦合度
  • 编译警告的数量
  • 代码风格

四 实现一个部署流水线


1、对价值流进行建模并创建简单的可工作框架
2、构建和部署过程的自动化
3、自动化单元测试和代码分析
单元测试的运行可以得到一些代码的分析数据,比如:代码覆盖率、圈复杂度、耦合度等。
4、自动化验收测试
功能测试和非功能测试,对于非功能测试应该在项目初期就开始,这样我们就可以很好的去分析当前的应用程序是否满足这些非功能的需求。
5、部署流水线的演进

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,477评论 19 139
  • 部署流水线 出现原因在软件的发布过程中,很多浪费来自于测试和运维环节。解决方案就是采取一种更完善的端到端的方法来交...
    落花的季节阅读 5,205评论 0 0
  • 基本的部署流水线就是从提交开始逐步通过每个测试阶段的自动化的过程。越往前的阶段有更快的反应速度,越往后走,信心不断...
    大饭团子阅读 5,449评论 0 1
  • 在上一章中,学到了关于测试的一些策略实现,作者从两个维度对测试进行划分,一个是业务导向,还是技术导向,另一个维度是...
    DouQing阅读 4,874评论 0 1
  • 什么是Thrift Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务,这是维基百科的...
    EA88阅读 9,446评论 3 12