21

我已经在 TeamCity 上设置了一个构建步骤,如此所述,对我们的测试服务器进行自动发布部署。但它没有使用 TeamCity 中构建的最新 nuget 包。

用例:

Teamcity 将创建版本为 1.0.0.9 的 nuget 包,包中的所有 dll 都是正确的版本,并且部署的 Octopus 中的 Release 具有相同的版本号,但 octopus 使用的包是更早的包例如 1.0.0.5。

我在构建步骤中指定了--force参数,因此它应该使用最新的包,但事实并非如此。

如果我在 Octopus 中手动创建一个版本,并选择它正在工作的最新包 100%

如果我遗漏了什么,请有人告诉我。

提前致谢

4

6 回答 6

19

我认为您需要做的是在 TeamCity 中创建两种构建配置,一种用于构建,一种用于使用 Octopus 部署。请参阅此链接,该链接末尾有一个小简介:

Note that NuGet packages created from your build won't appear in TeamCity until after the build completes. This means you'll usually need to configure a secondary build configuration, and use a snapshot dependency and build trigger in TeamCity to run the deployment build configuration after the first build configuration completes.

因此,在我的例子中,我创建了 2 个构建配置,然后设置了从构建到部署配置的快照依赖关系,以及在成功构建后启动部署的触发器。

于 2013-09-12T04:10:59.270 回答
3

看起来 --force 只是强制重新安装已经安装的包。您是否使用 --packageversion 参数?

于 2013-06-20T20:43:58.400 回答
1

我的组织使用 Jenkins CI。我们使用唯一的内部版本号作为我们的包版本,然后使用 --packageversion 参数部署该特定的包版本。

在我们有多个需要部署的服务的情况下。我们有一个提供唯一内部版本号的上游作业/主要作业。

我想你可以用 TeamCity 做同样的事情

主作业(唯一内部版本号)使用参数(唯一内部版本)调用作业 A 和作业 B。作业 A 和 B 构建版本(来自 Master Job)。作业 A 和 B 完成,然后发布各自的版本。

于 2013-06-25T01:26:05.537 回答
1

这可能是几件事。

查看。

http://octopusdeploy.com/documentation/integration/teamcity

您还没有提到您如何在 Teamcity 中使用 Octopus 的提要。我会从那里开始。

接下来,我将使用 teamcity 操作进行部署。您问“应该在哪里添加 --waitfordeployment 标志”,有一个复选框可以确保在操作可以继续之前部署已经工作。

于 2013-06-27T02:09:40.143 回答
0

在 TeamCity 中,我使用 Octo Push Packages 步骤,并在 Additional Parameters 字段中指定 --defaultpackgeversion {VERSION} 参数。

这将迫使 Octo 使用特定版本的软件包,而不是仅仅选择“最新版本”。

于 2016-08-29T18:54:15.330 回答
0

这个问题还有更多可能的原因。

  1. 要查看 Octopus 的问题,请访问Configuration -> Diagnostics 在此处输入图像描述

  2. 另一个常见问题是在部署步骤中使用包名称 #{variable}

    目前这是不可能的,应该手动设置包名称,例如MyWebSiteMyWindowsService。有关此功能,请参阅UserVoice在此处输入图像描述

于 2016-10-31T10:05:03.420 回答