十二因素应用-构建、发布、运行
跳到导航
跳到搜索
严格分离构建和运行阶段
通过三个阶段,将代码库转化为一个(非开发)部署:
- 构建阶段是将代码库转换为可执行的构建文件包的转换过程。构建阶段使用部署过程中指定的提交的代码版本,获取供应商的依赖项并编译二进制文件和资源。
- 发布阶段将构建阶段产生的构建文件与部署的当前配置结合起来。生成的发布包含构建文件和配置,准备好在执行环境中立即执行。
- 运行阶段(也称为”运行时”)通过启动一组应用程序的进程来在执行环境中运行应用程序,选择一个发布版本。
十二要素应用程序严格分离构建、发布和运行阶段。例如,在运行时无法对代码进行更改,因为无法将这些更改传播回构建阶段。
部署工具通常提供发布管理工具,最重要的是能够回滚到先前的发布版本。例如,Capistrano 部署工具将发布版本存储在名为 releases 的子目录中,其中当前发布版本是指向当前发布目录的符号链接。它的回滚命令使快速回滚到先前的发布版本变得容易。
每个发布都应该有唯一的发布 ID,例如发布的时间戳(如 2011-04-06-20:32:17)或递增的数字(如 v100)。发布是一个只能追加的账本,一旦创建就无法更改。任何变更都必须创建一个新的发布。
构建是由应用程序的开发人员在部署新代码时发起的。相比之下,运行时执行可以在某些情况下自动进行,例如服务器重启或由进程管理器重新启动崩溃的进程。因此,运行阶段应尽可能保持简单,因为导致应用程序无法运行的问题可能会在深夜时分损坏应用程序,而此时没有开发人员在场。构建阶段可以更复杂,因为对于驱动部署的开发人员来说,错误总是非常重要。