将 NuGet 包推送到 TeamCity NuGet 服务器

push NuGet packages to TeamCity NuGet server

我已经打开了 TeamCity 的 NuGet 服务器,我想推送通用包(即来自 public 源,例如 NuGet.org),因为构建服务器无法看到我们公司外部,所以恢复包在 NuGet.org 的构建服务器上是不可能的。

我看不出如何将这些包推送到我们的 TeamCity 服务器。我已经看到各种建议仍然使用包构建或从构建中发布的其他方式的各种答案,但这不适合我的用例。

如果我尝试从命令行发布,它会抱怨找不到 API 密钥(我从哪里得到它?)并且不允许我输入我的凭据(我假设我的团队城市登录就是这样),因为它告诉我 "Cannot prompt for input in non-interactive mode."(我没有设置那个模式,我不知道如何关闭它)。

那么,我如何push/publish将我在其他地方获得的临时包放入团队城市?

我认为 TeamCity 提供的 nuget 功能是 API 添加到 TeamCity 内置工件功能之上的。

这会产生很多后果:

  • 当执行生成任何标记为工件的 .nupkg 文件的构建配置时,它们将在 Teamcity nuget 源上可用。
  • 与 TeamCity 中发布的所有其他工件 nupkg 一样,受 Teamcity 的一般工件保留规则约束。
  • nuget 包的访问规则与 TeamCity 项目的访问规则相同。

然而据我所知,在 Teamcity Nuget API 中没有用于将包推送到它的实现。存储原始包或生成包的一般做法是使用独立的 nuget 服务器或服务,如普通文件共享、基于 Nuget.Core 的服务器、proget 或 myget.org.

更新: 如果您最终拥有许多自己的包,我听说有人报告说当客户解析包时,Teamcity 变得非常慢。

更新 2: 在过去的几年里,我采用了将构建工件包分成两个类别库包和部署包的概念。一个单独的包存储库可以用于这两种类型,但是像 Octopus 部署中可用的存储库应该只用于部署包。

更新 3: 微软有一个页面数 nuget server options.