十二因素应用-构建、发布、运行

来自泡泡学习笔记
BrainBs讨论 | 贡献2023年9月1日 (五) 15:53的版本 (创建页面,内容为“ <blockquote>'''严格分离构建和运行阶段''' </blockquote> 通过三个阶段,将代码库转化为一个(非开发)部署: # 构建阶段是将代码库转换为可执行的构建文件包的转换过程。构建阶段使用部署过程中指定的提交的代码版本,获取供应商的依赖项并编译二进制文件和资源。 # 发布阶段将构建阶段产生的构建文件与部署的当前配置结合起来。生成的发布包含…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

严格分离构建和运行阶段

通过三个阶段,将代码库转化为一个(非开发)部署:

  1. 构建阶段是将代码库转换为可执行的构建文件包的转换过程。构建阶段使用部署过程中指定的提交的代码版本,获取供应商的依赖项并编译二进制文件和资源。
  2. 发布阶段将构建阶段产生的构建文件与部署的当前配置结合起来。生成的发布包含构建文件和配置,准备好在执行环境中立即执行。
  3. 运行阶段(也称为”运行时”)通过启动一组应用程序的进程来在执行环境中运行应用程序,选择一个发布版本。


十二要素应用程序严格分离构建、发布和运行阶段。例如,在运行时无法对代码进行更改,因为无法将这些更改传播回构建阶段。


部署工具通常提供发布管理工具,最重要的是能够回滚到先前的发布版本。例如,Capistrano 部署工具将发布版本存储在名为 releases 的子目录中,其中当前发布版本是指向当前发布目录的符号链接。它的回滚命令使快速回滚到先前的发布版本变得容易。

每个发布都应该有唯一的发布 ID,例如发布的时间戳(如 2011-04-06-20:32:17)或递增的数字(如 v100)。发布是一个只能追加的账本,一旦创建就无法更改。任何变更都必须创建一个新的发布。


构建是由应用程序的开发人员在部署新代码时发起的。相比之下,运行时执行可以在某些情况下自动进行,例如服务器重启或由进程管理器重新启动崩溃的进程。因此,运行阶段应尽可能保持简单,因为导致应用程序无法运行的问题可能会在深夜时分损坏应用程序,而此时没有开发人员在场。构建阶段可以更复杂,因为对于驱动部署的开发人员来说,错误总是非常重要。