Deployment 如何让八达通在多个环境中部署选择包版本?

Deployment 如何让八达通在多个环境中部署选择包版本?,deployment,teamcity,nuget,octopus-deploy,Deployment,Teamcity,Nuget,Octopus Deploy,我们正在使用TeamCity server和OctoPack为多个部署环境构建包。问题在于,触手代理选择了软件包的最新版本,因此它是部署在所有环境中的同一(最新)软件包。以下是我们的设置摘要: 环境开发和阶段 从Git“DEV”分支触发到DEV的部署 从Git“STAGE”分支触发到STAGE的部署 OctoPack配置为生成包MyProduct.1.0.0.dev-%build\u计数器%,用于dev构建配置 OctoPack已配置为生成包MyProduct.1.0.0。%build\u c

我们正在使用TeamCity server和OctoPack为多个部署环境构建包。问题在于,触手代理选择了软件包的最新版本,因此它是部署在所有环境中的同一(最新)软件包。以下是我们的设置摘要:

  • 环境开发和阶段
  • 从Git“DEV”分支触发到DEV的部署
  • 从Git“STAGE”分支触发到STAGE的部署
  • OctoPack配置为生成包MyProduct.1.0.0.dev-%build\u计数器%,用于dev构建配置
  • OctoPack已配置为生成包MyProduct.1.0.0。%build\u counter%用于阶段构建配置
  • TeamCity配置为通过其NuGet提要公开OctoPack人工制品(NuGet软件包)
  • Octopus项目配置为从TeamCity NuGet feed部署具有NuGet Id MyProduct的包
因此,由于开发版本的运行频率更高,它们的%build_计数器更大,STAGE没有机会部署自己的软件包-Octopus Attacle更喜欢后缀为1.0.0.DEV-*的软件包


这一定是很常见的情况,但我还没有找到一个简单的方法来解决它。

这里没有记录一些部分:。但是,如果你仔细观察,就有可能知道你能做些什么

我认为这些工具是向后兼容的,但不是100%确定

当您使用我期望您使用的octo工具时,您可以设置
版本
(现在也称为
发布编号
)选项来指定发布编号。如果您没有指定任何其他内容,它将使用最新的软件包,因此您要做的是设置应用于发布的
packageversion
(现在也称为
defaultpackageversion

我认为应该这样做。如果没有,您将使用什么来创建发行版

使用我们已添加到构建代理上的环境路径中的octo工具时,我们从TeamCity使用的示例:

create-release --server=%conf.OctoServerApi% --project=%conf.OctoProject% --version=%env.OctopusPackageVersion% --deployto=%conf.OctoDeployEnv% --packageversion=%env.OctoPackPackageVersion% --apiKey=%conf.OctoApiKey% --waitfordeployment %conf.OctoExtraParams%
更新:


2.0的文档要好得多:

受Tomas Jansson答案的启发,只需在OctopusDeploy:Create release构建步骤(TeamCity v9)中添加以下命令行参数即可:

--packageversion=%build.number%

我猜你的意思是“TeamCity配置为生成打包”,而不是八达通?其他一些技巧:对STAGE和DEV(以及MASTER)使用不同的版本号,这将使其更易于长期维护。例如,在我们的dev中,版本号是0.0.0.x,而在master中,版本号是1.0.0.x。我认为最正确的版本是将dev设置为2.0.0.x,将master设置为1.0.0.x,当dev准备发布并合并到master时,master将增加到2.0.0.x,dev将增加到3.0.0.x。您可以将其视为开发是未来,而master是现在的产品。感谢Tomas,我将检查您的建议,并检查它是否解决了我们的问题。参考链接不再存在。