即使具有正确的权限和 Nuget 身份验证任务,Azure Pipeline 也无法访问 Azure Artefact Nuget 项目源

分享于2022年07月17日 azure azure-pipelines c# nuget nuget-package-restore 问答
【问题标题】:即使具有正确的权限和 Nuget 身份验证任务,Azure Pipeline 也无法访问 Azure Artefact Nuget 项目源(Azure Pipeline Cant Access Azure Artefact Nuget Project Feed Even With Correct Permissions And Nuget Authenticate Task)
【发布时间】:2022-07-08 17:59:59
【问题描述】:

我有一个非常奇怪的问题,我有一个基于项目的 nuget 提要,其中一个管道发布到它工作正常,然后另一个管道需要恢复使用此 nuget 提要的项目。

问题是我已遵循所有相关说明,例如:

  • 确保构建服务具有权限
  • 确保调用 NuGetAuthenticate 0 或 1
  • 确保包含提要的 nuget.config

例如, nuget.config 看起来像:



  
    
    
    
  

那么管道部分看起来像:

steps:
  - task: NuGetAuthenticate@0
  - task: DotNetCoreCLI@2
    displayName: dotnet restore
    inputs:
      command: restore
      nugetConfigPath: 'nuget.config'
      feedsToUse: config

这一切在 IDE(VS 和 Rider)中运行良好,发布和读取 nuget 包的管道都与提要位于同一个 azure devops 项目中。

当构建运行时,我看到身份验证步骤运行:

Setting up the credential provider to use the identity ' Build Service ()' for feeds in your organization/collection starting with:
  https://pkgs.dev.azure.com//
  https://.pkgs.visualstudio.com/

这是正确的并且指向正确的提要,但是当恢复运行时会出现以下错误:

error NU1301: Unable to load the service index for source http://pkgs.dev.azure.com///_packaging//nuget/v3/index.json.

网上所有的文章都说尝试切换到 NuGetAuthenticate@0 或者启用更高级别的设置以允许构建服务项目范围不受限制,以及确认所有权限都正确,都没有解决问题。


【解决方案1】:

这里的问题是 nuget.config 文件中的提要使用 http 而不是 https 并且出于某种原因,nuget 身份验证任务将仅验证 https url 而不是不安全的 http IDE 可以正常工作。

如此变化:


到:


解决了所有问题,并且可以正常工作,在线上从未将其作为可能的解决方案提及,因此我认为将其放在此处以供遇到相同问题的任何后代使用是谨慎的。