我有一个Azure DevOps项目(仅一个)。
我将构建管道设置为在“托管VS2017”代理程序池中运行。该代理程序池似乎位于[MyProject] \ Build管理员,贡献者,项目管理员和发布管理员角色中。
在DevOps项目中,我还有一个Artifacts nuget提要。它具有[MyProject] \ Project有效用户设置为“读取者”角色。看来项目有效用户具有上述成员的所有代理池角色。
我有一个添加的azure-pipelines.yml脚本,它在开始时就将工件提要添加为nuget源:
# Add nuget source
- powershell: Invoke-RestMethod "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" -OutFile "$env:UserProfile/nuget.exe"
- script: '%UserProfile%\nuget.exe sources Add -Name "devops" -Source "https://pkgs.dev.azure.com/MyProject/_packaging/feed/nuget/v3/index.json"'
然后,构建yml点缀一个dotnet build
,但在NuGet.targets
内部却失败了,
Unable to load the service index for source https://pkgs.dev.azure.com/MyProject/_packaging/feed/nuget/v3/index.json.
Response status code does not indicate success: 401 (Unauthorized).
我该如何进行这项工作?我的构建需要该工件供稿上其他构建的软件包...
答案 0 :(得分:1)
使用built-in tasks安装和运行NuGet,不会出现身份验证问题。
答案 1 :(得分:1)
使用dotnet任务的restore命令。如果您使用的是单个Azure Artifacts提要,只需从任务的下拉列表中选择它即可(而不是您提到的PowerShell)。如果有多个提要(看起来不是问题,但以防万一),则需要检入引用所有提要的NuGet.config,然后将任务指向该配置。
您可能还需要将'--no-restore'标志传递给'dotnet build'命令。
如果仍然遇到问题,请确保correct build identity可以访问您的供稿。
答案 2 :(得分:1)
有一个更好的替代imo。您可以继续使用脚本来dotnet restore
。
只需在NuGetAuthenticate@0
steps:
- task: NuGetAuthenticate@0
- script: dotnet restore --no-cache --force
此任务将使用NuGet.config
文件中需要的nuget feed对管道进行身份验证。
请注意,当nuGet提要位于Azure DevOps中时,则不需要任何其他操作。如果提要是外部的,则可以在Azure DevOps上配置nuGet服务连接(在链接上有更多信息)。