如何设置TeamCity以使用自己的HTTP身份验证的NuGet服务?

时间:2016-06-01 11:21:15

标签: msbuild nuget teamcity teamcity-9.0

问题是TeamCity无法授权在同一个TeamCity实例上运行的NuGet服务。

您可以在下面找到Build配置的外观: Build Step

我还为NuGet Credentials添加了Build Feature: NuGet Credentials

使用此配置,我在日志中收到以下错误:

Restoring NuGet package Nuget.Package.Name.0.1.0.41.
Please provide credentials for: http://teamcity-nuget-server.cloudapp.azure.com/httpAuth/app/nuget/v1/FeedService.svc
UserName:   GET http://www.nuget.org/Packages(Id='Nuget.Package.Name';,Version='0.1.0.41')
NotFound http://www.nuget.org/Packages(Id='Nuget.Package.Name';,Version='0.1.0.41') 194ms
GET http://www.nuget.org/FindPackagesById()?id='Nuget.Package.Name';
NotFound http://www.nuget.org/FindPackagesById()?id='Nuget.Package.Name'; 105ms
WARNING: Unable to find version '0.1.0.41' of package 'Nuget.Package.Name'.
C:\Windows\system32\config\systemprofile\AppData\Local\NuGet\Cache: Package 'Nuget.Package.Name.0.1.0.41' is not found on source 'C:\Windows\system32\config\systemprofile\AppData\Local\NuGet\Cache'.
C:\Windows\system32\config\systemprofile\.nuget\packages\: Package 'Nuget.Package.Name.0.1.0.41' is not found on source 'C:\Windows\system32\config\systemprofile\.nuget\packages\'.
http://teamcity-nuget-server.cloudapp.azure.com/httpAuth/app/nuget/v1/FeedService.svc: Unable to load the service index for source http://teamcity-nuget-server.cloudapp.azure.com/httpAuth/app/nuget/v1/FeedService.svc.
Cannot prompt for input in non-interactive mode.
http://nuget.org: The V2 feed at 'http://www.nuget.org/FindPackagesById()?id='Nuget.Package.Name'' returned an unexpected status code '404 Not Found'.

Errors in packages.config projects
Unable to find version '0.1.0.41' of package 'Nuget.Package.Name'.
C:\Windows\system32\config\systemprofile\AppData\Local\NuGet\Cache: Package 'Nuget.Package.Name.0.1.0.41' is not found on source 'C:\Windows\system32\config\systemprofile\AppData\Local\NuGet\Cache'.
C:\Windows\system32\config\systemprofile\.nuget\packages\: Package 'Nuget.Package.Name.0.1.0.41' is not found on source 'C:\Windows\system32\config\systemprofile\.nuget\packages\'.
http://teamcity-nuget-server.cloudapp.azure.com/httpAuth/app/nuget/v1/FeedService.svc: Unable to load the service index for source http://teamcity-nuget-server.cloudapp.azure.com/httpAuth/app/nuget/v1/FeedService.svc.
Cannot prompt for input in non-interactive mode.
http://nuget.org: The V2 feed at 'http://www.nuget.org/FindPackagesById()?id='Nuget.Package.Name'' returned an unexpected status code '404 Not Found'.

NuGet Config files used:
C:\Windows\system32\config\systemprofile\AppData\Roaming\NuGet\NuGet.Config

Feeds used:
C:\Windows\system32\config\systemprofile\AppData\Local\NuGet\Cache
C:\Windows\system32\config\systemprofile\.nuget\packages\
http://teamcity-nuget-server.cloudapp.azure.com/httpAuth/app/nuget/v1/FeedService.svc
http://nuget.org

我尝试了其他几种配置,即使用%teamcity.nuget.feed.server%甚至%teamcity.nuget.feed.auth.server%。我还尝试使用NuGet凭据删除构建功能(因为文档说它不需要使用自托管的NuGet服务进行身份验证)。试图删除http://nuget.org来源。什么都行不通。

2 个答案:

答案 0 :(得分:0)

TeamCity有几个问题:一个是NuGet版本3.3.0及更高版本:https://youtrack.jetbrains.com/issue/TW-44438,第二个是本地代理:https://youtrack.jetbrains.com/issue/TW-44479。请检查链接的门票。您可以尝试使用早期的NuGet版本或尝试workaround

答案 1 :(得分:0)

我认为您的问题是您使用的是NuGet 3,但包源指向v2 Feed。

更新您的" NuGet.config" (C:\ Windows \ system32 \ config \ systemprofile \ AppData \ Roaming \ NuGet \ NuGet.Config)包含以下包源:

<packageSources>
  <add key="NuGet official package source" value="https://api.nuget.org/v3/index.json" />
</packageSources>