7

我们正在使用 TeamCity 服务器和 OctoPack 为多个部署环境构建包。问题是 tentacle 代理选择了最新版本的包,所以它是部署在所有环境中的相同(最新)包。这是我们设置的摘要:

  • 环境 DEV 和 STAGE;
  • 部署到 DEV 是从 Git "dev" 分支触发的;
  • 从 Git “stage” 分支触发部署到 STAGE;
  • OctoPack 被配置为生成包 MyProduct.1.0.0.dev-%build_counter% 用于 DEV 构建配置;
  • OctoPack 配置为生成包 MyProduct.1.0.0.%build_counter% 用于 STAGE 构建配置;
  • TeamCity 配置为通过其 NuGet 源公开 OctoPack 人工制品(NuGet 包);
  • Octopus 项目配置为使用来自 TeamCity NuGet 源的 NuGet Id MyProduct 部署包。

所以发生的情况是,由于 DEV 构建运行更频繁,它们具有更大的 %build_counter%,并且 STAGE 没有机会部署自己的包 - Octopus 触手更喜欢带有 1.0.0.dev-* 后缀的包.

这一定是相当普遍的情况,但我还没有找到一种简单的方法来解决它。

4

2 回答 2

9

这里没有记录一些部分:https ://github.com/OctopusDeploy/Octopus-Tools 。但是,如果您查看https://github.com/OctopusDeploy/Octopus-Tools/blob/master/source/OctopusTools/Commands/CreateReleaseCommand.cs就可以弄清楚您可以做什么。

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

当您使用我希望您使用的 octo 工具时,您可以设置version(也称为releasenumbernow)选项来指定版本号。如果您没有指定任何其他内容,它将采用最新的包,因此您要做的是设置应该用于发布的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 的文档要好得多:http ://docs.octopusdeploy.com/pages/viewpage.action?pageId=360596

于 2014-01-21T14:01:28.000 回答
4

受 Tomas Jansson 回答的启发,只需将以下内容添加到OctopusDeploy中的Additional command line arguments :创建发布构建步骤(TeamCity v9)对我有用:

--packageversion=%build.number%
于 2015-09-09T13:03:24.113 回答