我在TeamCity上设置了一个构建步骤,如here所述,为我们的测试服务器进行自动发布部署。但它没有使用TeamCity中构建的最新nuget包。
使用案例
Teamcity将创建版本为1.0.0.9的nuget包,包中的所有dll都是正确的版本,并且部署的Octopus版本具有相同的版本号,但章鱼使用的包是较早的包,例如1.0.0.5。
我在构建步骤中指定了 - force 参数,因此它应该使用最新的包但不是。
如果我在Octopus中手动创建一个版本,并选择最新的软件包,它将100%
如果我遗失了某些东西,请有人告诉我。
提前致谢
答案 0 :(得分:19)
我认为你需要做的是在TeamCity中创建两个构建配置,一个用于构建,一个用Octopus部署。请参阅最后有一个小模糊的this link:
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个构建配置,然后设置从构建到部署配置的快照依赖关系,以及在成功构建后启动部署的触发器。
答案 1 :(得分:2)
看起来--force只是强制将软件包重新安装(如果已安装)。你使用的是--packageversion参数吗?
答案 2 :(得分:1)
我的组织使用Jenkins CI。我们使用唯一的内部版本号作为我们的软件包版本,然后使用--packageversion参数部署该特定的软件包版本。
在我们有多个需要部署的服务的情况下。我们有一个上游作业/主要工作,提供唯一的内部版本号。
我想你可以用TeamCity做同样的事情
主作业(唯一构建号)使用参数(唯一构建)调用作业A和作业B.作业A和B构建版本(来自Master Job)。作业A和B完成然后发布他们各自的版本。
答案 3 :(得分:1)
这可能是一些事情。
退房。
http://octopusdeploy.com/documentation/integration/teamcity
您尚未提及如何使用Teamcity中八达通的Feed。我会从那里开始。
接下来,我将使用teamcity动作进行部署。您询问“应该在哪里添加--waitfordeployment标志”有一个复选框,以确保部署在行动可以继续之前有效。
答案 4 :(得分:0)
在TeamCity中,我使用了Octo Push Packages步骤,在Additional Parameters字段中,我指定了--defaultpackgeversion {VERSION}参数。
这将迫使Octo使用特定版本的软件包,而不是仅选择“最新版本”。
答案 5 :(得分:0)
问题的原因可能更多。
另一个常见问题是在部署步骤中使用程序包名称 #{variable}
目前无法手动设置包名称,例如MyWebSite
或MyWindowsService
。有关此功能,请参阅UserVoice。