DevOps 管道无法使用 Artifact Feed 进行恢复

问题描述 投票:0回答:1

我正在开发 Azure DevOps 管道。我们最近开始将模块包发布到工件源,新项目使用

<PackageReference>
将这些模块导入为 NuGet 包。

现在我们管道中的构建步骤无法加载 NuGet 包。

Starting: Build
==============================================================================
Task         : .NET Core
Description  : Build, test, package, or publish a dotnet application, or run a custom dotnet command
Version      : 2.221.0
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/build/dotnet-core-cli
==============================================================================
C:\Windows\system32\chcp.com 65001
Active code page: 65001
Info: .NET Core SDK/runtime 2.2 and 3.0 are now End of Life(EOL) and have been removed from all hosted agents. If you're using these SDK/runtimes on hosted agents, kindly upgrade to newer versions which are not EOL, or else use UseDotNet task to install the required version.
C:\hostedtoolcache\windows\dotnet\dotnet.exe build "-dl:CentralLogger,\"D:\a\_tasks\DotNetCoreCLI_5541a522-603c-47ad-91fc-a4b1d163081b\2.221.0\dotnet-build-helpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll\"*ForwardingLogger,\"D:\a\_tasks\DotNetCoreCLI_5541a522-603c-47ad-91fc-a4b1d163081b\2.221.0\dotnet-build-helpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll\"" --configuration Release
MSBuild version 17.3.2+561848881 for .NET
  Determining projects to restore...
##[error]MyApp\MyModule\MyModule.csproj(0,0): Error NU1301: Unable to load the service index for source https://pkgs.dev.azure.com/MyOrg/MyProj/_packaging/MyFeed/nuget/v3/index.json.
D:\a\1\s\MyApp\MyModule\MyModule.csproj : error NU1301: Unable to load the service index for source https://pkgs.dev.azure.com/MyOrg/MyProj/_packaging/MyFeed/nuget/v3/index.json. [D:\a\1\s\MySolution.sln]
...

运行不会显式失败,它只是一遍又一遍地重新尝试从提要加载,直到我取消管道(我让它运行两倍于通常的构建时间,以确保它不只是花费比预期更长的时间).

这是我直到失败的构建步骤的管道:

trigger: 
- "none"

pool:
  vmImage: 'windows-2022'

variables:
  buildConfiguration: 'Release'
  dotNetFramework: 'net6.0'
  dotNetVersion: '6.0.x'

steps:
- task: UseDotNet@2
  inputs: 
    version: $(dotNetVersion)

- task: DotNetCoreCLI@2
  displayName: 'Restore dotnet tools'
  inputs:
    command: custom
    custom: 'tool'
    arguments: 'restore'

- task: DotNetCoreCLI@2
  displayName: 'Generate license info file using dotnet-project-licenses'
  inputs:
    command: custom
    custom: 'tool'
    arguments: 'run dotnet-project-licenses -i "." -u -o --outfile "./licenses.txt" --packages-filter "/My.*/"'
    
- task: DotNetCoreCLI@2
  displayName: 'Build'
  inputs:
    command: 'build'
    arguments: --configuration $(buildConfiguration)

这是我使用的 nuget.config 文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="DevExpress" value="https://nuget.devexpress.com/<api-key>/api" />
    <add key="Kalisto" value="https://pkgs.dev.azure.com/MyOrg/MyProj/_packaging/MyFeed/nuget/v3/index.json" />
  </packageSources>
</configuration>

我知道提要 URL 是正确的,因为我可以在 IDE 中恢复解决方案。不幸的是,我没有获得有关管道运行中出现问题的更多信息,但我怀疑这可能是授权问题。

项目构建服务用户也具有对 feed 的贡献者访问权限。同一用户还发布了模块,因此这不应该是问题。

我尝试了这个答案但没有成功。我使用的 PAT 是我的个人令牌,具有对工件的读取权限。

现在我已经没有办法解决这个问题了。

.net azure-devops nuget
1个回答
0
投票

错误 NU1301:无法加载源的服务索引 https://pkgs.dev.azure.com/MyOrg/MyProj/_packaging/MyFeed/nuget/v3/index.json

根据错误信息,需要检查Feed和Pipeline是否在同一个Project中。

如果是在不同的项目中,您可以参考以下步骤解决问题:

1.检查Build Service帐号的权限(项目级别和集合级别)。

步骤如下:

第 1 步:导航至 Artifacts -> 目标 Feed -> Feed 设置 -> 权限

Step2:授予构建服务帐户贡献者角色。构建服务帐户名称:

ProjectnamethePipelinelocated Build Service (Organization name)
Project Collection Build Service(Orgname)

例如:

2.如果Feed和Pipeline在不同的项目中,需要disable

Limit job authorization scope to current project for non-release pipelines
选项在Project Settings -> Settings中启用。

例如:

注意: 要禁用此选项,您需要先禁用

Organization Settings-> Settings
中的选项。然后您可以在项目级别禁用该选项。

另一方面,如果您想使用个人 PAT 来验证 feed,可以将 PAT 添加到 nuget.config 文件中。

例如:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\" />
    <add key="test1" value="https://pkgs.dev.azure.com/xx/xx/_packaging/xx/nuget/v3/index.json" />
  </packageSources>


  <packageSourceCredentials>
    <test1>
        <add key="Username" value="123" />
        <add key="Password" value="based64PAT" />
      </test1>
  </packageSourceCredentials>
</configuration>

请参阅文档:packageSourceCredentials

© www.soinside.com 2019 - 2024. All rights reserved.