Octopus Deploy - 管理多个渠道的版本号

时间:2016-05-03 08:41:59

标签: release-management devops octopus-deploy

我们刚刚开始使用Octopus Deploy。

我们有3个频道

  • Beta (对于QA生命周期 - 无法进一步推广)
  • 稳定(完整生命周期 - 可升级为UAT,分期与制作)
  • 修补程序(生命周期可以跳过任何环境)

是否有办法让每个频道以不同方式创建其版本号,但是为其号码使用相同的种子?

即。

  • 测试版增加版本+有频道名称:1.0.1-beta1.0.2-beta1.0.3-beta
  • 稳定增加次要:1.1.01.2.01.3.0
  • 修补程序增加版本:1.1.11.1.21.1.3

虽然这对我来说似乎是可取的 - 有没有一种说法不这样做?

3 个答案:

答案 0 :(得分:1)

使用部署自动化,您希望在部署之间尽可能保持相同 - 八达通可以帮助实现这一目标。

例如,Octopus将对发布的流程,变量和包进行版本化,以便在发布的整个生命周期内对这些变更不适用。

因此,当您将1.1.0的代码弹出到Octopus时,它会生成版本1.1.0并为该版本的流程和变量创建快照,以便它们与任何更改隔离开来。

如果您上传了代码的1.1.0BETA,那么决定"它是发布的候选者",然后您上传1.1.0,它将是不同的代码,不同的版本和过程和变量的不同快照。然后,您必须从头开始贯穿整个生命周期。如果您已经针对1.1.0 BETA进行了测试,那么它对1.1.0无效 - 因此您不得不重复工作。

开箱即用&#34;开箱即用&#34;方式,您上传1.1.0并将其流入您的QA环境,并将其作为错误版本阻止,或将其作为一个好的版本推广 - 确保一切都是一致的,您只需要做一次。< / p>

您可以管理&#34; BETA&#34;,&#34; RC&#34;和&#34; RTM&#34;以另一种方式(即通过变量替换),你可以保持其他一切相同吗?

答案 1 :(得分:0)

您应该使用构建服务器对软件包进行版本化。(像Jenkins,TFS ..)有许多用于版本控制的插件和格式化模板。特别是Octopus是一种不是版本控制工具的部署工具。

使用Jenkins MSbuild (Jenkins为我构建Octopus部署)

  • 2016.4.28.2-dev的
  • 2016.4.28.1-主
  • 2016.3.25.1的修复程序

    $ {BUILD_YEAR} $ {BUILD_MONTH} $ {BUILD_DAY} $ {BUILDS_TODAY} -branchname

使用TFS Build 打开TFS构建定义进程,打开高级并检查“构建数字格式”您应该使用它。

$(日期:yy.MMdd.HH.mm)

答案 2 :(得分:0)

“是否有这样的论点?” 是的。您希望八达通强制将哪个版本与哪个通道一起使用。使用基于版本范围和SemVer标签的版本控制规则来控制章鱼频道。您的两个渠道用SemVer术语是无法区分的,因此需要更改软件包版本号格式,以使渠道版本规则可以正常工作。在此基础上,实现所需的功能将意味着发行版本号与软件包版本号不符(嗯,如果您从软件包的版本号中得出发行号,这对我来说一直是明智的选择,那么,避免在两个地方管理版本号,并且我假设您同意发布1.2.3包含相同版本号的软件包是明智的。但是,通过对发行版本号进行轻微优惠,您可以接近想要的...

您的 Beta 频道很好,没问题:在该频道的版本规则上提供beta的预发布标签。但是问题是要区分这两个:

  • 稳定小调:1.1.01.2.01.3.0
  • 修补程序递增修订:1.1.11.1.21.1.3

遗憾的是,无法基于整个版本号创建规则(例如,使用正则表达式:\.0$)。出于与您完全相同的原因,我们本来希望完全符合该规则。因此,除非您愿意为每个以.0结尾的可能的版本手动添加一个版本规则(我假设不是...),否则我们必须做出一点让步才能适应章鱼想要的内容。 / p>

您需要选择这两个渠道之一,以同时拥有SemVer预发布标签,就像 Beta 一样。假设我们在 Hotfix 版本中添加了-hotfix后缀。然后,您需要为Hotfix通道设置版本规则,以将hotfix作为预发布标签。并且必须更改 Stable 频道,使其版本规则为^$(表示没有标签),以防止该频道使用的其他频道发布内容。

以上内容为您提供了所需的内容,并稍作让步,所有 Hotfix 版本均带有-hotfix后缀。如果版本号不是beta,并且不以.0结尾,那么很容易获得自动生成的版本来决定在创建软件包时添加该后缀。