持续交付

持续交付依赖于一系列的工具和实践,下图是一个持续交付的工作流:

CD Workflow

CD Workflow

还有一系列与开发无关的技能:

  1. 自动化
  2. DevOps
  3. 云基础设施
  4. 以软件为中心的哲学

基础设施

在我们使我们的项目可以持续交付软件包的时候,我们需要

本地开发环境

在本地编写代码时,我们需要设置本地的开发环境。假设我们要开始一个Java Web项目,在我们的开发机器上,我们需要安装:

除此,在我们的项目代码里,我们还需要:

当然我们还需要辅助一些测试工具来测试网站,如性能测试、网络测试等等。

持续集成环境

为什么在这里会出现一个持续集成环境?我也不知道,只是想到了这里。由于我们需要持续集成,所以我们也需要一个运行持续集成服务器的机器。

持续集成服务器是由两部分组成的:Master和Agent。即一个用于控制其他运行持续集成服务的机器,以及执行指令的机器。因此,我们需要在一台机器上安装Master软件,在另外一台机器上作为Agent。在我们的Agent上,我们需要安装相对应的运行服务的软件,如

同时,我们还需要有一个地方放置我们的RPM包。

测试环境

相比于上面两个环境来说,测试环境就比较简单了。我们只需要创建几个不同的环境,即开发者的测试环境、QA环境、模拟线上环境,在这几个不同的环境上有不同的配置。

持续部署

在持续交付之外的,还有持续部署——这个就更依赖于团队的组织结构了。其与持续交付的对比如下图所示:

持续部署

持续部署

我们可以从图中看到,两者的最大不同之处在于:持续部署会直接将构建生成的部署到产品环境。这就意味着,我们不仅要有强大的技术实力,也要有足够的组织支持才能做到。而这部分已经超出了软件开发的内容了~~。