将Nuget包推送到Azure DevOps

8

我正在尝试从MAC向Azure DevOps推送Nuget包。

我创建了一个Azure DevOps工件存储库,并尝试使用以下命令推送包:

dotnet nuget push 
  --source "https://pkgs.dev.azure.com/MyProject/_packaging/MyFeed/nuget/v2" 
  --api-key "MyToken" 
  "MyPackage.nupkg"

我按照以下步骤生成了令牌:https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops,并授予了完全访问权限。
我一直遇到这个错误:
错误:无法加载源https://pkgs.dev.azure.com/mdmoura/_packaging/Moleky/nuget/v3/index.json的服务索引。错误:响应状态代码未指示成功:401(未经授权)。
我尝试了不同的选项,但总是出现此错误...
我可能漏掉了什么?

2
为什么不使用内置任务? - 4c74356b41
你尝试过从Azure Devops门户获取PAT令牌吗? - Tom Sun - MSFT
你的电脑上有代理吗?如果有,请尝试移除它并再次测试。你能直接在浏览器中打开源路径吗? - Leo Liu
1
@TomSun 是的,那就是我获取令牌的方式... - Miguel Moura
@LeoLiu-MSFT 不,没有代理。是的,我可以在浏览器上同时打开V3和V2,并没有问题。但是当我推送程序包时,始终收到未经授权的错误提示。 - Miguel Moura
显示剩余3条评论
3个回答

2

2
错误:未识别的命令或参数“add”。该命令需要 .NET Core 3.1.200。 - recolic

0
管道在源中未经过身份验证。在尝试推送NuGet包之前,您需要添加一个身份验证任务。 请尝试以下操作:
- task: NuGetAuthenticate@0
  displayName: 'Authenticate in NuGet feed'
- script: dotnet nuget push $(PATH_PIPELINE_ARTIFACT_NAME)/**/*.nupkg --source MyProject --api-key MyToken
  displayName: 'Uploads nuGet packages'

请注意使用NuGetAuthenticate@0任务进行身份验证。因为您似乎正在使用Azure DevOps工件,所以不需要其他任何身份验证。否则,您将需要创建连接(更多信息https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/package/nuget-authenticate?view=azure-devops)。
根据命令dotnet nuget push,请注意我编写了一个带有正则表达式**/*.nupkg的完整路径。使用或替换此PATH_PIPELINE_ARTIFACT_NAME变量,该变量是指您要上传的nuGet软件包当前所在的路径。正则表达式将允许您发布该文件夹中的所有nuGet软件包。

-5

1
我正在使用dotnet push,因为我在MAC上运行,而nuget仅适用于Windows。难道dotnet nuget不就是nuget吗? - Miguel Moura
Rob想说的是,当您使用nuget命令行(https://learn.microsoft.com/en-us/azure/devops/artifacts/nuget/publish?view=azure-devops#create-and-publish-your-own-nuget-package)时,该令牌将被忽略。我可以确定这是真的,并且使用虚拟API密钥进行推送可以在nuget上工作。虽然我还没有尝试过dotnet。无论如何,您的问题与PAT有关,而不是API密钥^^ - Cem.S
通过比较这两种方法,你应该首先执行nuget add source (https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-nuget-add-source)并使用你的令牌(PAT)作为密码。然后才能使用虚拟API密钥推送包。 - Cem.S

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