思特沃克学院小小读书会ThoughtWorks欧亚创新工作室

《持续交付》- 构建与部署的脚本化

2017-06-09  本文已影响8人  司鑫

对于一个简单的项目来说,使用一些常用的 IDE 就可以满足对项目的构建和测试,但对于一些比较复杂的项目,需要多人协作开发,那么使用脚本来执行应用程序的构建、测试和打包是很有必要的。不管我们是采取哪种方式对项目进行构建和部署,我们都应该使其一直保持活力,也就是说这个系统不仅要从项目开始就开发,而且一直要持续到软件在生产环境中的维护阶段。

一 构建工具概览


一个项目如果是采用手动的方式去构建的话,缺点显而易见可。所有采用合适的构建工具是必不可少的。对于构建工具来说,它们都有一个共同的核心功能,即对依赖关系建模,在执行过程中,可以以正确顺序去执行一系列的任务,计算如何达到你所指定的目标,而且被依赖的任务只需要被执行一次也应该只被执行一次。举个栗子:当我们想要去运行测试时,构建工具就可以帮我们把运行测试之前的一些操作执行了(初始化测试数据、编译测试)。一个简单的构建依赖关系图:

简单的构建依赖图

对于图中的每一个任务它都包含两个特点:

对于构建工具可以分为:

二 构建部署脚本化的原则与实践


  1. 为部署流水线的每一个阶段创建脚本
    把创建的脚本和源代码放在同一版本库中。
  2. 使用恰当的技术部署应用程序
  3. 使用同样的脚本向所有环境部署
  4. 使用操作系统自带的包管理工具
  5. 确保部署流程是幂等的
    目的是为了在开始部署时目标处于何种状态,部署流程也应该总是令目标环境达到同样(正确)的状态,并以之为结束点。
  6. 部署系统的增量式演进

三 部署脚本化


对于一个复杂的项目来说,手动的去进行项目部署会消费很大的精力,而出错的几率也是非常大的,所以我们应该去避免手动去部署。这也是环境管理的核心原则之一,即测试和生产环境的修改只能由自动化过程去执行,我们不应该手动远程登录到这些环境中去部署工作,而应该完全脚本化。脚本化部署的三种方式:

疑问

上一篇下一篇

猜你喜欢

热点阅读