将NuGet包推送到Artifactory本地存储库子文件夹

3
我已经按照这里的说明,建立了一个本地NuGet仓库。apikey已设置,在NuGet.Config文件中进行身份验证。
如果要直接将nupkg推送到此文件夹中,没有问题:
nuget push Nuget.0.1.15.nupkg -Source http://arti.url/artifactory/api/nuget/nuget-repo-local

但是,一旦我尝试将其推送到Artifactory的子文件夹中以获得良好的布局,这个过程就失败了:

nuget push Nuget.0.1.15.nupkg -Source http://arti.url/artifactory/api/nuget/nuget-repo-local/aFolder

这是一个已知的问题,有没有人有解决方案?为每个文件夹创建apikey并不是我想要的...警告如下:
WARNING: No API Key was provided and no API Key could be found for 'http://arti.url/artifactory/api/nuget/nuget-repo-local/aFolder'. 
To save an API Key for a source use the 'setApiKey' command.

错误信息如下:

Failed to process request. 'Forbidden'. 
The remote server returned an error: (403) Forbidden..

默认只支持扁平文件夹的方式。查看这篇博客文章,了解如何加快更新进程。 - Jeroen Heier
不完全符合我的要求。正如文档所示,这是可能的。 - choli
1
关于您的状态码为403的错误消息,它更多与身份验证/权限错误有关。如果您进入您的Artifactory ->管理员->编辑存储库“nuget-repo-local”,并勾选“强制身份验证”选项,cli将要求您提供凭据,然后您就可以进行身份验证并推送到您尝试的子文件夹。 - jroquelaure
1
额外的注释:根本原因是您在仓库本身上运行了nuget setapikey,但当您推送到子文件夹时,nuget不会将其视为子文件夹,而是将其视为另一个没有在配置中设置apikey的仓库。 - jroquelaure
1个回答

6
当你执行以下操作时:
nuget push Nuget.0.1.15.nupkg -Source http://arti.url/artifactory/api/nuget/nuget-repo-local/aFolder

Nuget将整个URL解释为仓库地址(客户端实现基于平面部署,而Artifactory更加灵活)。
关于您在根仓库上的部署,我假设您按照指示先在仓库上运行了setApiKey命令。
nuget setapikey <USERNAME>:<PASSWORD> -Source http://arti.url/artifactory/api/nuget/nuget-repo-local

这样可以让你在根目录不输入凭据即可推送,但如果需要推送到子文件夹,你可以像对待存储库本身一样在其上设置apikey:
nuget setapikey <USERNAME>:<PASSWORD> -Source http://arti.url/artifactory/api/nuget/nuget-repo-local/aFolder

然而,您需要在每个文件夹上都这样做

或者在推送时使用“apikey”选项

nuget push Nuget.0.1.15.nupkg -Source http://arti.url/artifactory/api/nuget/nuget-repo-local/aFolder -apikey <USERNAME>:<PASSWORD>

或者在Artifactory的存储库配置中勾选“强制认证”选项。此选项将强制您输入凭据并防止出现“403”错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接