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

cho*_*oli 3 artifactory nuget

我已经按照此处所述设置了一个本地 NuGet 存储库。已在 NuGet.Config 文件中设置 apikey 和身份验证。

直接push一个nupkg到这个文件夹中是没有问题的:

nuget push Nuget.0.1.15.nupkg -Source http://arti.url/artifactory/api/nuget/nuget-repo-local
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将其推送到子文件夹以在 Artifactory 中拥有良好的布局时,就会失败:

nuget push Nuget.0.1.15.nupkg -Source http://arti.url/artifactory/api/nuget/nuget-repo-local/aFolder
Run Code Online (Sandbox Code Playgroud)

这是一个已知问题,有人有解决方案吗?为每个文件夹创建一个 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.
Run Code Online (Sandbox Code Playgroud)

然后错误说:

Failed to process request. 'Forbidden'. 
The remote server returned an error: (403) Forbidden..
Run Code Online (Sandbox Code Playgroud)

小智 6

当你这样做时:

nuget push Nuget.0.1.15.nupkg -Source http://arti.url/artifactory/api/nuget/nuget-repo-local/aFolder
Run Code Online (Sandbox Code Playgroud)

nuget将整个url解释为repo地址(客户端实现基于扁平部署,Artifactory更灵活)

关于您在根存储库上的部署,我假设您遵循指示并首先在存储库上运行 setApiKey 命令:

nuget setapikey <USERNAME>:<PASSWORD> -Source http://arti.url/artifactory/api/nuget/nuget-repo-local
Run Code Online (Sandbox Code Playgroud)

这使您无需每次都输入凭据即可进行推送,而只能在根级别进行推送。

现在,如果您想推送子文件夹,您可以在其上设置 apikey,就像对 rpo 本身所做的那样:

nuget setapikey <USERNAME>:<PASSWORD> -Source http://arti.url/artifactory/api/nuget/nuget-repo-local/aFolder
Run Code Online (Sandbox Code Playgroud)

但是您必须对每个文件夹执行此操作

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

nuget push Nuget.0.1.15.nupkg -Source http://arti.url/artifactory/api/nuget/nuget-repo-local/aFolder -apikey <USERNAME>:<PASSWORD>
Run Code Online (Sandbox Code Playgroud)

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