我们正在尝试使用TeamCity将Octopus用于CD。我们已启用OctoPack来创建Nuget包,以便在部署期间使用。我们还在尝试构建库并使用集成的Nuget Server。
我们能够成功地做到这两点。两者都部署到一个环境,并使用Nuget.Config来安装库包并在TC中恢复和构建。
昨天,CD停止工作,正在构建软件包,但Nuget Server无法访问它们。我们根据TC指令重置metadataBuilds,但我们仍未在Feed中获取新包。我们确实确认了这些包仍在建设中。
有什么想法吗?
答案 0 :(得分:1)
我想说一个解决方案的出发点取决于在TC中构建解决方案时存储nuget包的位置。
如果它们留在TC Nuget Feed中,那么您需要观察Nuget商店中是否有超过100个包(TC Artifacts)。我们发现,一旦你超过100个包裹,当八达通试图从中取出时,100个包裹之后的包裹不会出现在饲料中。
如果你正在推销原生八达通Nuget商店,或许要注意该服务器上的空间没有填满到不能再推送它们的地步。
TC中的构建日志应该告诉您很多关于这些软件包在何处以及如何处理的信息。它们还应该在构建之后显示为构建工件,这将允许进一步验证它们至少是构建的。
答案 1 :(得分:0)
虽然它可能没有关系,但是在构建完成后,TC中的Nuget feed可能需要一段时间来获取新包。特别是一旦你获得了大量的包裹。这可能会导致八达通失败,如果它刚刚开始(通过链式构建)。
我发现最有效的方法是将部署包直接推送到Octopus内部nuget商店,并在TC或其他nuget服务器中保持共享(在其他项目中引用)。 (注意,您不能使用Octopus作为nuget服务器来检索包)。推送是作为生成包的构建中的显式步骤完成的。