AppVeyor NuGet Restore 无法连接到私人帐户仓库
AppVeyor NuGet Restore failing to connect to private account repo
我正在尝试恢复已上传到我的 AppVeyor 帐户 NuGet 提要的包,但在构建期间无法连接到提要。
在我的 appveyor.yml 文件中我有:-
nuget:
account_feed: true
而且我已经确认日志中提到的帐户提要对于我的帐户提要是正确的URL。
我还通过使用 Visual Studio 连接到它并输入我的帐户凭据来打开该提要。这样做时,我已确认我尝试恢复的包按预期存在。
但是构建失败并在日志中显示:-
https://ci.appveyor.com/nuget/xxxxxxxxxx-yyyyyyyyyyyy: Unable to load the service index for source https://ci.appveyor.com/nuget/xxxxxxxxxx-yyyyyyyyyyyy.
The HTTP request to 'GET https://ci.appveyor.com/nuget/xxxxxxxxxx-yyyyyyyyyyyy' has timed out after 100000ms.
NuGet Config files used:
C:\projects\MyProjectName\Source\NuGet.Config
C:\Users\appveyor\AppData\Roaming\NuGet\NuGet.Config
C:\ProgramData\nuget\Config\Microsoft.VisualStudio.Offline.config
C:\ProgramData\nuget\Config\ServiceFabricSDK.config
Feeds used:
C:\Users\appveyor\.nuget\packages\
https://www.nuget.org/api/v2
https://A-CUSTOM-EXTERNAL-NUGET-FEED-I-ALSO-ACCESS/nuget
https://ci.appveyor.com/nuget/xxxxxxxxxx-yyyyyyyyyyyy
C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\
C:\Program Files\Microsoft SDKs\Service Fabric\packages\
注意:自定义外部 NuGet 源应该是无关的。在我的构建因私人帐户回购尝试中断之前,我还有其他软件包可以从那里成功恢复。
我是否遗漏了一些可以让我连接到我的 AppVeyor 帐户 NuGet 存储库以恢复程序包的东西?
会不会跟包裹本身有关系?
请看this讨论。
AppVeyor 进行了一些更改,不允许您为 public 代码存储库隐式包含您的 private 帐户 NuGet 存储库。
正如@ilyaf 的回答,讨论here 证实了这一点,并说以下是原因。
In previous implementation having this enabled and working for public
project was a vulnerability rather than a feature because on your
account feed you can have NuGet packages from both public and private
projects and anyone submitting PR to public build would have been able
to grab private packages from your account feed. It's fixed now.
因此,如@Feodor Fitsner 的评论中所述,要使其正常运行,您需要配置一个新的 nuget source
并提及您帐户的 NuGet 存储库。
这是您需要做的。
转到您要构建的 AppVeyor 中的项目,然后select该项目的设置。在 'Environments' 设置选项卡上,添加两个新的环境变量:-
- 'nuget_user'
- 'nuget_password'
...将您的 AppVeyor 凭据放入每个的值中。
在您的 appveyor.yml 中,在 install
节点下添加一个新的 NuGet 源。
install:
- nuget sources add -Name MyAccountFeed -Source <feed-url> -UserName %nuget_user% -Password %nuget_password%
...其中 <feed-url>
是您的 NuGet 提要 URL。
注意:这两个步骤在步骤 2 和 3 或本文档中定义。
https://www.appveyor.com/docs/nuget/#configuring-external-private-nuget-feed-for-your-builds
现在,确保您的构建关闭 account_feed
和 project_feed
(否则构建会抱怨有重复的提要)。
通过删除以下内容来执行此操作:-
nuget: account_feed:
或确保您有
nuget:
account_feed: false
project_feed: false
您的项目现在应该正确构建,从您的 NuGet 帐户检索您的 NuGet 包。
然而,这可能是 AppVeyor 最初试图阻止其更改的解决方法。
我正在尝试恢复已上传到我的 AppVeyor 帐户 NuGet 提要的包,但在构建期间无法连接到提要。
在我的 appveyor.yml 文件中我有:-
nuget:
account_feed: true
而且我已经确认日志中提到的帐户提要对于我的帐户提要是正确的URL。 我还通过使用 Visual Studio 连接到它并输入我的帐户凭据来打开该提要。这样做时,我已确认我尝试恢复的包按预期存在。
但是构建失败并在日志中显示:-
https://ci.appveyor.com/nuget/xxxxxxxxxx-yyyyyyyyyyyy: Unable to load the service index for source https://ci.appveyor.com/nuget/xxxxxxxxxx-yyyyyyyyyyyy.
The HTTP request to 'GET https://ci.appveyor.com/nuget/xxxxxxxxxx-yyyyyyyyyyyy' has timed out after 100000ms.
NuGet Config files used:
C:\projects\MyProjectName\Source\NuGet.Config
C:\Users\appveyor\AppData\Roaming\NuGet\NuGet.Config
C:\ProgramData\nuget\Config\Microsoft.VisualStudio.Offline.config
C:\ProgramData\nuget\Config\ServiceFabricSDK.config
Feeds used:
C:\Users\appveyor\.nuget\packages\
https://www.nuget.org/api/v2
https://A-CUSTOM-EXTERNAL-NUGET-FEED-I-ALSO-ACCESS/nuget
https://ci.appveyor.com/nuget/xxxxxxxxxx-yyyyyyyyyyyy
C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\
C:\Program Files\Microsoft SDKs\Service Fabric\packages\
注意:自定义外部 NuGet 源应该是无关的。在我的构建因私人帐户回购尝试中断之前,我还有其他软件包可以从那里成功恢复。
我是否遗漏了一些可以让我连接到我的 AppVeyor 帐户 NuGet 存储库以恢复程序包的东西? 会不会跟包裹本身有关系?
请看this讨论。
AppVeyor 进行了一些更改,不允许您为 public 代码存储库隐式包含您的 private 帐户 NuGet 存储库。
正如@ilyaf 的回答,讨论here 证实了这一点,并说以下是原因。
In previous implementation having this enabled and working for public project was a vulnerability rather than a feature because on your account feed you can have NuGet packages from both public and private projects and anyone submitting PR to public build would have been able to grab private packages from your account feed. It's fixed now.
因此,如@Feodor Fitsner 的评论中所述,要使其正常运行,您需要配置一个新的 nuget source
并提及您帐户的 NuGet 存储库。
这是您需要做的。
转到您要构建的 AppVeyor 中的项目,然后select该项目的设置。在 'Environments' 设置选项卡上,添加两个新的环境变量:-
- 'nuget_user'
- 'nuget_password'
...将您的 AppVeyor 凭据放入每个的值中。
在您的 appveyor.yml 中,在 install
节点下添加一个新的 NuGet 源。
install:
- nuget sources add -Name MyAccountFeed -Source <feed-url> -UserName %nuget_user% -Password %nuget_password%
...其中 <feed-url>
是您的 NuGet 提要 URL。
注意:这两个步骤在步骤 2 和 3 或本文档中定义。 https://www.appveyor.com/docs/nuget/#configuring-external-private-nuget-feed-for-your-builds
现在,确保您的构建关闭 account_feed
和 project_feed
(否则构建会抱怨有重复的提要)。
通过删除以下内容来执行此操作:-
nuget: account_feed:
或确保您有
nuget:
account_feed: false
project_feed: false
您的项目现在应该正确构建,从您的 NuGet 帐户检索您的 NuGet 包。 然而,这可能是 AppVeyor 最初试图阻止其更改的解决方法。