TeamCity Nuget安装构建步骤无法使用多个源,其中一个源为TC';s私人裸体饲料

TeamCity Nuget安装构建步骤无法使用多个源,其中一个源为TC';s私人裸体饲料,teamcity,nuget,teamcity-7.1,Teamcity,Nuget,Teamcity 7.1,将源设置到TeamCity的NuGet服务器时,我在NuGet安装构建步骤中收到以下错误: Step 1/4: NuGet install (NuGet Installer) (3s) [15:11:19][Step 1/4] scan: Searching for nuget.config files [15:11:19][Step 1/4] install: Installing NuGet packages for packages.config (3s) [15:11:19][in

将源设置到TeamCity的NuGet服务器时,我在NuGet安装构建步骤中收到以下错误:

Step 1/4: NuGet install (NuGet Installer) (3s)

[15:11:19][Step 1/4] scan: Searching for nuget.config files

[15:11:19][Step 1/4] install: Installing NuGet packages for packages.config (3s)

[15:11:19][install] NuGet command: C:\TeamCity\buildAgent\tools\NuGet.CommandLine.2.2.0.nupkg\tools\NuGet.exe install C:\TeamCity\buildAgent\work\a4b9de5be22a981\packages.config -OutputDirectory C:\TeamCity\buildAgent\work\a4b9de5be22a981\packages -Source http://localhost:9090/guestAuth/app/nuget/v1/FeedService.svc

[15:11:19][install] Starting: C:\TeamCity\buildAgent\temp\agentTmp\custom_script96367186180319830.cmd

[15:11:19][install] in directory: C:\TeamCity\buildAgent\work\a4b9de5be22a981

[15:11:22][install] The remote server returned an error: (404) Not Found.

[15:11:22][install] Process exited with code 1

[15:11:22][Step 1/4] Step NuGet install (NuGet Installer) failed
如果我将sources字段留空,它将从默认提要(NuGet社区提要)中找到NuGet包,但不会找到在本地构建和打包并托管在TC的NuGet提要中的包


如何在NuGet安装程序构建步骤中同时使用默认提要和内部TC的NuGet提要?

您可以通过
NuGet.config
文件为解决方案指定自定义提要

关键点是提供凭证部分
packagesourceredentials
,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="Local" value="http://localhost:9090/httpAuth/app/nuget/v1/FeedService.svc" />
  </packageSources>
  <activePackageSource>
    <add key="Local" value="http://localhost:9090/httpAuth/app/nuget/v1/FeedService.svc" />
  </activePackageSource>
  <packageSourceCredentials>
    <Local>
      <Username>login</Username>
      <Password>pa$$w0rd</Password>
    </Local>
  </packageSourceCredentials>
</configuration>

登录
pa$$w0rd
config
文件应位于存储库中的
sln
文件旁边。

这似乎是TeamCity的一个示例。解决方案建议通过命令行客户端添加包源,然后使用授权凭据更新这些源:

nuget sources add -name [name] -source [feedUrl]
nuget sources update -Name [name] -User [username] -pass [password]

据我所知,Nuget将缓存这些凭据以备将来的请求。我不知道缓存多久被清除一次;您可能需要在开始构建之前运行
nget源代码更新
,以确保缓存的一致性。

我们在TeamCity插件中实现了身份验证提要支持。请关注对该问题的评论http://youtrack.jetbrains.com/issue/TW-20764

您是否尝试将Team City NuGet提要url和标准NuGet提要url作为包源放在构建步骤中?NuGet.exe命令行似乎只使用了一个包源。我还要检查TeamCityNuGetFeedURL是否正确,GuestAuth是否打开,因为我认为它不应该返回404。NuGet.exe应返回一条消息,指示未找到包,而不是404。发生404的原因是,在“包源”字段中使用%teamcity.NuGet.feed.server%时,会将其转换为来宾(无身份验证)TC的NuGet提要(类似)。但是,我禁用了公共提要。这就是为什么404。我刚才想起来了。仍在研究如何使用私有提要实现这一点,我还没有找到解决方案。这里有一个类似的问题为我指明了正确的方向,但它不适用于私有TC NuGet提要:这个解决方案确实很简单,但它保留了存储库密码源代码控制。这通常被认为是一种解决方案。即使没有提供凭据,并且包位于网络存储库中,此解决方案也可以工作。它们会被添加到用户nuget.config中。例如:C:\users\john\appdata\nuget\nuget.config他们6年后不会过期,TeamCity仍然不支持经过身份验证的nuget提要?还是我遗漏了什么?