Teamcity的八达通部署未使用最新软件包

Teamcity的八达通部署未使用最新软件包,teamcity,octopus-deploy,Teamcity,Octopus Deploy,如前所述,我已经在TeamCity上设置了一个构建步骤,以便对我们的测试服务器进行自动发布部署。但它没有使用TeamCity中构建的最新nuget软件包 用例: Teamcity将创建版本为1.0.0.9的nuget软件包,软件包中的所有DLL都是正确的版本,并且部署的Octopus版本具有相同的版本号,但Octopus使用的软件包是早期软件包,例如1.0.0.5 我已经在构建步骤中指定了--force参数,因此它应该使用最新的包,但它不是 如果我手动创建一个八达通版本,并选择最新的软件包,它将

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

用例:

Teamcity将创建版本为1.0.0.9的nuget软件包,软件包中的所有DLL都是正确的版本,并且部署的Octopus版本具有相同的版本号,但Octopus使用的软件包是早期软件包,例如1.0.0.5

我已经在构建步骤中指定了--force参数,因此它应该使用最新的包,但它不是

如果我手动创建一个八达通版本,并选择最新的软件包,它将100%正常工作

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


提前感谢

看起来,force只是在软件包已经安装的情况下强制重新安装。是否使用--packageversion参数?

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

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

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


主作业(唯一生成编号)使用参数(唯一生成)调用作业A和作业B。作业A和B生成版本(来自主作业)。作业A和作业B完成后,发布各自的版本。

可能是一些事情

退房

你还没有提到你是如何在Teamcity消费八达通的订阅源的。我会从那里开始


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

我认为您需要做的是在TeamCity中创建两个构建配置,一个用于构建,另一个用于使用Octopus部署。请参阅结尾处有一个小模糊的部分:

请注意,在构建完成之前,从构建中创建的NuGet软件包不会出现在TeamCity中。这意味着您通常需要配置辅助生成配置,并在第一个生成配置完成后,在TeamCity中使用快照依赖项和生成触发器来运行部署生成配置。


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

在TeamCity中,我使用了一个Octo Push Packages步骤,并在附加参数字段中指定--defaultpackgeversion{VERSION}参数


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

出现此问题的原因可能更多

  • 要查看八达通的问题,请转到
    Configuration->Diagnostics

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

    目前不可能,包名应手动设置,例如
    MyWebSite
    MyWindowsService
    。有关此功能,请参见。


  • 我已将其设置为查看packages文件夹,但仍然没有提取最新的软件包。team city配置中构建步骤的顺序是什么?您是否在等待部署完成后再继续其他步骤?也许你失踪了,等待部署。你真的需要知道你在TeamCity中使用的步骤才能提供更多帮助。有两个构建步骤,第一步构建软件包,第二步使用八达通部署软件包。应该在哪里添加--waitfordeployment标志?我不能使用packageversion,因为正在部署的网站有多个项目,并且这些项目的包版本可能并不相同。嗯,是否可以为它们提供相同的包版本?如果TeamCity正在创建NuGet软件包,那么在创建nuspec文件时,您是否可以使用TC版本号,以便在单个版本中所有的软件包号都是一致的?好的,选中该标志后,链接没有提供我还没有的任何信息。但部署仍会给出相同的问题那么,代理是否存在密钥或权限问题?代理计算机在部署nuget包后是否有权访问该包?同意。您可以在TeamCity构建期间发布构建工件,但它是在后台完成的,所以据我所知,您仍然不能依赖它。是的,在我发布了这个答案之后,我还看到了在Tc8中使用MetaRunner。我还是会选择2个链接的构建配置,除非绝对需要,或者你试图保持在免费许可证允许的20个构建配置之下:)我一直在谷歌搜索,这是我见过的最好的答案,但这似乎不对吗?我不喜欢为了部署每个项目都有一个额外的项目。是的,有点次优。您可能希望研究metarunner方法,该方法可以在单个构建配置中发布工件-抱歉,我没有链接,但我记得在某处看到过它。我已经将build+deploy配置组合在各自的子项目中,以保持UI中的整洁,它似乎可以很好地满足我们的需要。推动Octopus 2.1中的内置存储库可以解决这个问题-在TC构建中使用NuGet Publish,然后是Octopus步骤: