根据版本标签限制部署到某些环境

Restrict deployment to certain environments based on version tag

我正在使用 TFS 完成我的 CI 设置,我还有最后一部分需要克服。目前,每个 CI 构建都被推送到 octopus,nuget 包的版本为 major.minor.patch.buildid,并且这些用于 Octopus 版本中的版本为 major.minor.patch-beta{buildid}。因此,每个 CI 版本都将被标记为给定版本的 beta 版本,例如1.3.0.194 / 1.3.0-beta194。毫无疑问,在选择一个进入测试团队之前,将有许多迭代开发版本 - 让我们假设在这种情况下选择的版本是 194。此时我设想创建一个新版本 1.3.0-rc1,它使用 build 194 二进制文件。然后将其推送到测试环境并开始测试。可能有多个测试周期,假设测试人员签署了 1.3.0-rc4 版本。然后可以基于 1.3.0-rc4 二进制文件制作新版本 1.3.0,这是该产品的黄金版本。

首先,这是个好主意吗?一些反馈将不胜感激。

另外,是否可以根据版本中的标记将部署限制在某些环境中?在我的示例中,我永远不会希望将标记为 -beta 的版本部署到测试环境 - 只有 -rc 构建应该是。同样,只应将无标签构建部署到生产环境。

用 beta/rc 标记 deployment 包是一个坏主意,因为这会在您的交付过程中引入一个额外的步骤。您将拥有许多构建版本,有些会升级到上层环境,有些则不会。没关系。您试图将这些视为用于依赖项的常规 Nuget 包 versioning/management。这是不同的。只需在没有标签的情况下增加您的内部版本号,并推广获得签署的内部版本。

您也不应该将部署限制在基于标签的环境中。

这就是您绝对不应该这样做的原因。

当您创建版本 1.3.0.194 时,Octopus 将保证为工件、流程和变量提供快照,这意味着部署将在每个环境中以相同的方式执行。

您可以随心所欲地编辑这些内容,但是 1.3.0.194 不会因为这些更改而成为更具风险的部署,因为它会忘记它们。

如果您创建了版本 1.3.0.194,然后更改了您的部署过程或变量,这些更改将泄漏到版本 1.3.0.194-beta 中,并且它不再是您测试过的相同部署。当您更改为版本 1.3.0.194-rc 时,也会发生同样的情况 - 更多更改会泄漏,因为您尚未实际测试。

您的部署过程,就像您的代码一样,应该进行版本控制和测试 - 这就是您在整个部署生命周期中使用相同版本所获得的结果。