【发布时间】:2017-05-12 19:16:00
【问题描述】:
我有几个应用程序,一些通过 ClickOnce 发布的 WinForms 和一些我们使用 vNext 构建脚本构建并部署为这些构建脚本的最后一步的网站,如果一切构建和单元测试通过的话。每个应用程序都有两个分支,一个用于构建和部署到暂存区,另一个用于生产。
使用 TFS 中的新发布管理功能,我假设我要将部署任务从构建定义移动到发布区域。但是,除了可能是一个批准按钮之外,这真的能给我带来什么?
【问题讨论】:
我有几个应用程序,一些通过 ClickOnce 发布的 WinForms 和一些我们使用 vNext 构建脚本构建并部署为这些构建脚本的最后一步的网站,如果一切构建和单元测试通过的话。每个应用程序都有两个分支,一个用于构建和部署到暂存区,另一个用于生产。
使用 TFS 中的新发布管理功能,我假设我要将部署任务从构建定义移动到发布区域。但是,除了可能是一个批准按钮之外,这真的能给我带来什么?
【问题讨论】:
嗯,这取决于?...
如果您正在练习持续交付,那么您就有一个直接部署到生产环境的分支。然而,许多人希望先部署到暂存环境,然后在那里踢轮胎,然后再部署到生产环境。
但是,使用分支执行此操作是错误的。这是一种重要的反模式,可能会导致生产中的故障无法通过登台检测到。这在很大程度上是由于合并造成的,但由于编译器不是确定性的,因此您在暂存中测试的内容与您在生产中部署的内容不同。
您应该更改您的模型,以便在生产的各个阶段具有相同的构建输出流。这些阶段越少越好,理想的是一个。
在现代发布流程中,您总是在单个分支上“工作”,然后从该分支构建。当您有想要推广的构建时,您可以创建一个版本来跟踪该构建从不同阶段到生产的进度,而无需重新编译。
【讨论】: