Azure DevOps 将 Nuget 发布到托管源 [英] Azure DevOps publish Nuget to hosted feed

查看:31
本文介绍了Azure DevOps 将 Nuget 发布到托管源的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个使用托管(免费)AzureDevops 管道的问题.我有一个小的 .NET Core 项目,我想创建一个 Azure Devops 管道,其中完成以下操作

I have a question using the hosted (free) AzureDevops pipelines. I have a small .NET Core project which I want to create an Azure Devops pipeline where the following is done

  • 恢复
  • 构建
  • 打包
  • 推送(到 AzureDevOps 托管的工件提要)

我在 Azure Devops 中的项目中有以下提要设置

I have the following feed setup on my project in Azure Devops

哪个有这个提要的连接信息

Which has this connection information for the feed

..../NugetProjects/_packaging/nugetprojectstestfeed/nuget/v3/index.json

它还应用了以下安全性(注意项目集合构建服务设置为贡献者")

It also has the following security applied to it (note the Project Collection Build Service is set as "Contributor")

微软官方文档中的这一段所述

Which is as stated from this paragraph from Microsoft official docs

要发布到 Azure Artifacts 源,请将项目集合构建服务标识设置为源的贡献者.

To publish to an Azure Artifacts feed, set the Project Collection Build Service identity to be a Contributor on the feed.

然后我有这个构建管道设置(Yaml)

I then have this build pipeline setup (Yaml)

# ASP.NET Core
# Build and test ASP.NET Core projects targeting .NET Core.
# Add steps that run tests, create a NuGet package, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

variables:
  buildConfiguration: 'Release'
  Major: '1'
  Minor: '0'
  Patch: '0'

steps:

- task: DotNetCoreCLI@2
  displayName: 'Restore'
  inputs:
    command: restore
    projects: '**/MathsLib.csproj'


- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    command: build
    projects: '**/MathsLib.csproj'
    arguments: '--configuration Release' # Update this to match your need


- task: DotNetCoreCLI@2
  inputs: 
    command: 'pack'
    projects: '**/MathsLib.csproj'
    outputDir: '$(Build.ArtifactStagingDirectory)'
    versioningScheme: 'byPrereleaseNumber'
    majorVersion: '1'
    minorVersion: '0'
    patchVersion: '0'


- task: NuGetAuthenticate@0
  displayName: 'NuGet Authenticate'
- task: NuGetCommand@2
  displayName: 'NuGet push'
  inputs:
    command: push
    publishVstsFeed: 'nugetprojectstestfeed'
    allowPackageConflicts: true

整个管道运行良好,直到 Nuget 推送.如图所示

The entire pipeline works fine up until the Nuget push. As shown here

但是如果我查看异常,我会看到这种事情

But if I look into the exception I see this sort of thing

##[warning]Could not create provenance session: {"statusCode":500,"result":{"$id":"1","innerException":null,"message":"The feed with ID 'nugetprojectstestfeed' doesn't exist.","typeName":"Microsoft.VisualStudio.Services.Feed.WebApi.FeedIdNotFoundException, Microsoft.VisualStudio.Services.Feed.WebApi","typeKey":"FeedIdNotFoundException","errorCode":0,"eventId":3000}}
[command]/usr/bin/mono /opt/hostedtoolcache/NuGet/4.1.0/x64/nuget.exe push /home/vsts/work/1/a/MathsLib.1.0.0-CI-20191114-115941.nupkg -NonInteractive -Source https://pkgs.dev.azure.com/XXXXX/_packaging/nugetprojectstestfeed/nuget/v3/index.json -ApiKey VSTS -Verbosity Detailed
System.AggregateException: One or more errors occurred. (Unable to load the service index for source https://pkgs.dev.azure.com/XXXXX/_packaging/nugetprojectstestfeed/nuget/v3/index.json.) ---> NuGet.Protocol.Core.Types.FatalProtocolException: Unable to load the service index for source https://pkgs.dev.azure.com/XXXXX/_packaging/nugetprojectstestfeed/nuget/v3/index.json. ---> System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (Not Found - The feed with ID 'nugetprojectstestfeed' doesn't exist. (DevOps Activity ID: F123AC3A-8E75-4D3A-B3B6-60EC4510FF54)).

这是我原来的 Feed 连接

This was my original feed connection

https://pkgs.dev.azure.com/XXXX/NugetProjects/_packaging/nugetprojectstestfeed/nuget/v3/index.json

但这是错误消息中显示的内容

But this is what is shown in the error message

https://pkgs.dev.azure.com/XXXXX/_packaging/nugetprojectstestfeed/nuget/v3/index.json

所以看起来它试图访问某个根项目中的提要,而不是我在 Azure DevOps 中设置的NuGetProjects"项目.是否有一些我缺少的设置/配置告诉它以NuGetProjects"项目内的提要为目标

So it looks like its trying to access a feed in some root project, not the "NuGetProjects" project that I have setup in Azure DevOps. Is there some setting/config that I am missing to tell it to target the feed inside the "NuGetProjects" project

正如我所说,它看起来像是在寻找一些不在为其设置构建管道的特定项目内的顶级提要

As I say it looks like its looking for some top level feed not inside the specific project for which the build pipeline is setup for

使用新 Feed 的完整分步

所以为了完整起见,这里完整介绍了我如何创建项目、提要以及它在组织中的位置(我已经按照建议创建了一个新提要作为尝试)

So for completeness here is a full run down of how I created the project the feed and where it sits in the organisation of things (I have created a new feed as suggested as something to try)

我有这个组织sachabarber2019",里面有这些项目

I have this organisation "sachabarber2019", which has these projects in it

然后我在组织的一个项目中创建了这个提要

I have then created this feed in one of the projects of the organisation

使用这些设置

这是当前的构建管道

# ASP.NET Core
# Build and test ASP.NET Core projects targeting .NET Core.
# Add steps that run tests, create a NuGet package, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

variables:
  buildConfiguration: 'Release'
  Major: '1'
  Minor: '0'
  Patch: '0'

steps:

- task: DotNetCoreCLI@2
  displayName: 'Restore'
  inputs:
    command: restore
    projects: '**/MathsLib.csproj'


- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    command: build
    projects: '**/MathsLib.csproj'
    arguments: '--configuration Release' # Update this to match your need


- task: DotNetCoreCLI@2
  inputs: 
    command: 'pack'
    projects: '**/MathsLib.csproj'
    outputDir: '$(Build.ArtifactStagingDirectory)'
    versioningScheme: 'byPrereleaseNumber'
    majorVersion: '1'
    minorVersion: '0'
    patchVersion: '0'


- task: NuGetCommand@2
  displayName: 'NuGet push'
  inputs:
    command: push
    feedsToUse: select
    packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg'
    vstsFeed: anotherfeed
    nuGetFeedType: internal
    publishVstsFeed: anotherfeed
    allowPackageConflicts: true


和以前一样,我得到同样的错误

And as before I get the same error

##[section]Starting: NuGet push
==============================================================================
Task         : NuGet
Description  : Restore, pack, or push NuGet packages, or run a NuGet command. Supports NuGet.org and authenticated feeds like Azure Artifacts and MyGet. Uses NuGet.exe and works with .NET Framework apps. For .NET Core and .NET Standard apps, use the .NET Core task.
Version      : 2.161.0
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/package/nuget
==============================================================================
Caching tool: NuGet 4.1.0 x64
Found tool in cache: NuGet 4.1.0 x64
Resolved from tool cache: 4.1.0
Using version: 4.1.0
Found tool in cache: NuGet 4.1.0 x64
SYSTEMVSSCONNECTION exists true
SYSTEMVSSCONNECTION exists true
SYSTEMVSSCONNECTION exists true
Detected NuGet version 4.1.0.2450 / 4.1.0
##[warning]Could not create provenance session: {"statusCode":500,"result":{"$id":"1","innerException":null,"message":"The feed with ID 'anotherfeed' doesn't exist.","typeName":"Microsoft.VisualStudio.Services.Feed.WebApi.FeedIdNotFoundException, Microsoft.VisualStudio.Services.Feed.WebApi","typeKey":"FeedIdNotFoundException","errorCode":0,"eventId":3000}}
[command]/usr/bin/mono /opt/hostedtoolcache/NuGet/4.1.0/x64/nuget.exe push /home/vsts/work/1/a/MathsLib.1.0.0-CI-20191120-121118.nupkg -NonInteractive -Source https://pkgs.dev.azure.com/sachabarber2019/_packaging/anotherfeed/nuget/v3/index.json -ApiKey VSTS -Verbosity Detailed
NuGet Version: 4.1.0.2450
mono-sgen: /home/vsts/work/_tasks/NuGetCommand_333b11bd-d341-40d9-afcf-b32d5ce6f23b/2.161.0/CredentialProvider/CredentialProvider.TeamBuild.exe -uri https://pkgs.dev.azure.com/sachabarber2019/_packaging/anotherfeed/nuget/v3/index.json -nonInteractive -verbosity detailed
mono-sgen: URI Prefixes:
mono-sgen:     https://dev.azure.com/sachabarber2019/
mono-sgen:     https://pkgs.dev.azure.com/sachabarber2019/
mono-sgen:     https://pkgsproduks1.pkgs.visualstudio.com/
mono-sgen:     https://pkgs.dev.azure.com/sachabarber2019/
mono-sgen:     https://sachabarber2019.pkgs.visualstudio.com/
mono-sgen:     https://pkgs.dev.azure.com/sachabarber2019/
mono-sgen: URI: https://pkgs.dev.azure.com/sachabarber2019/_packaging/anotherfeed/nuget/v3/index.json
mono-sgen: Is retry: False
mono-sgen: Matched prefix: https://pkgs.dev.azure.com/sachabarber2019/
System.AggregateException: One or more errors occurred. (Unable to load the service index for source https://pkgs.dev.azure.com/sachabarber2019/_packaging/anotherfeed/nuget/v3/index.json.) ---> NuGet.Protocol.Core.Types.FatalProtocolException: Unable to load the service index for source https://pkgs.dev.azure.com/sachabarber2019/_packaging/anotherfeed/nuget/v3/index.json. ---> System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (Not Found - The feed with ID 'anotherfeed' doesn't exist. (DevOps Activity ID: 9E8C7E28-9D51-44A1-9286-8F6F839BCBD6)).
  at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode () [0x00040] in <7ecf813f2d314058b05c6c092c47b77a>:0 
  at NuGet.Protocol.HttpSource+<>c__DisplayClass12_0`1[T].<GetAsync>b__0 (System.Threading.CancellationToken lockedToken) [0x004a8] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Common.ConcurrencyUtilities.ExecuteWithFileLockedAsync[T] (System.String filePath, System.Func`2[T,TResult] action, System.Threading.CancellationToken token) [0x0024a] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.HttpSource.GetAsync[T] (NuGet.Protocol.HttpSourceCachedRequest request, System.Func`2[T,TResult] processAsync, NuGet.Common.ILogger log, System.Threading.CancellationToken token) [0x000ed] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.ServiceIndexResourceV3Provider.GetServiceIndexResourceV3 (NuGet.Protocol.Core.Types.SourceRepository source, System.DateTime utcNow, NuGet.Common.ILogger log, System.Threading.CancellationToken token) [0x00207] in <d0f788a4af354971807e5d8ca6fc682e>:0 
   --- End of inner exception stack trace ---
  at NuGet.Protocol.ServiceIndexResourceV3Provider.GetServiceIndexResourceV3 (NuGet.Protocol.Core.Types.SourceRepository source, System.DateTime utcNow, NuGet.Common.ILogger log, System.Threading.CancellationToken token) [0x002d5] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.ServiceIndexResourceV3Provider.TryCreate (NuGet.Protocol.Core.Types.SourceRepository source, System.Threading.CancellationToken token) [0x00233] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.Core.Types.SourceRepository.GetResourceAsync[T] (System.Threading.CancellationToken token) [0x000b8] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.PackageUpdateResourceV3Provider.TryCreate (NuGet.Protocol.Core.Types.SourceRepository source, System.Threading.CancellationToken token) [0x0007d] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.Core.Types.SourceRepository.GetResourceAsync[T] (System.Threading.CancellationToken token) [0x000b8] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.Core.Types.SourceRepository.GetResourceAsync[T] () [0x0006e] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Commands.CommandRunnerUtility.GetPackageUpdateResource (NuGet.Configuration.IPackageSourceProvider sourceProvider, System.String source) [0x000f1] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Commands.PushRunner.Run (NuGet.Configuration.ISettings settings, NuGet.Configuration.IPackageSourceProvider sourceProvider, System.String packagePath, System.String source, System.String apiKey, System.String symbolSource, System.String symbolApiKey, System.Int32 timeoutSeconds, System.Boolean disableBuffering, System.Boolean noSymbols, NuGet.Common.ILogger logger) [0x00133] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.CommandLine.PushCommand.ExecuteCommandAsync () [0x001b0] in <d0f788a4af354971807e5d8ca6fc682e>:0 
   --- End of inner exception stack trace ---
  at System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00011] in <285579f54af44a2ca048dad6be20e190>:0 
  at System.Threading.Tasks.Task.Wait (System.Int32 millisecondsTimeout, System.Threading.CancellationToken cancellationToken) [0x00043] in <285579f54af44a2ca048dad6be20e190>:0 
  at System.Threading.Tasks.Task.Wait () [0x00000] in <285579f54af44a2ca048dad6be20e190>:0 
  at NuGet.CommandLine.Command.Execute () [0x000bd] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.CommandLine.Program.MainCore (System.String workingDirectory, System.String[] args) [0x001f3] in <d0f788a4af354971807e5d8ca6fc682e>:0 
---> (Inner Exception #0) NuGet.Protocol.Core.Types.FatalProtocolException: Unable to load the service index for source https://pkgs.dev.azure.com/sachabarber2019/_packaging/anotherfeed/nuget/v3/index.json. ---> System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (Not Found - The feed with ID 'anotherfeed' doesn't exist. (DevOps Activity ID: 9E8C7E28-9D51-44A1-9286-8F6F839BCBD6)).
  at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode () [0x00040] in <7ecf813f2d314058b05c6c092c47b77a>:0 
  at NuGet.Protocol.HttpSource+<>c__DisplayClass12_0`1[T].<GetAsync>b__0 (System.Threading.CancellationToken lockedToken) [0x004a8] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Common.ConcurrencyUtilities.ExecuteWithFileLockedAsync[T] (System.String filePath, System.Func`2[T,TResult] action, System.Threading.CancellationToken token) [0x0024a] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.HttpSource.GetAsync[T] (NuGet.Protocol.HttpSourceCachedRequest request, System.Func`2[T,TResult] processAsync, NuGet.Common.ILogger log, System.Threading.CancellationToken token) [0x000ed] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.ServiceIndexResourceV3Provider.GetServiceIndexResourceV3 (NuGet.Protocol.Core.Types.SourceRepository source, System.DateTime utcNow, NuGet.Common.ILogger log, System.Threading.CancellationToken token) [0x00207] in <d0f788a4af354971807e5d8ca6fc682e>:0 
   --- End of inner exception stack trace ---
  at NuGet.Protocol.ServiceIndexResourceV3Provider.GetServiceIndexResourceV3 (NuGet.Protocol.Core.Types.SourceRepository source, System.DateTime utcNow, NuGet.Common.ILogger log, System.Threading.CancellationToken token) [0x002d5] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.ServiceIndexResourceV3Provider.TryCreate (NuGet.Protocol.Core.Types.SourceRepository source, System.Threading.CancellationToken token) [0x00233] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.Core.Types.SourceRepository.GetResourceAsync[T] (System.Threading.CancellationToken token) [0x000b8] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.PackageUpdateResourceV3Provider.TryCreate (NuGet.Protocol.Core.Types.SourceRepository source, System.Threading.CancellationToken token) [0x0007d] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.Core.Types.SourceRepository.GetResourceAsync[T] (System.Threading.CancellationToken token) [0x000b8] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.Core.Types.SourceRepository.GetResourceAsync[T] () [0x0006e] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Commands.CommandRunnerUtility.GetPackageUpdateResource (NuGet.Configuration.IPackageSourceProvider sourceProvider, System.String source) [0x000f1] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Commands.PushRunner.Run (NuGet.Configuration.ISettings settings, NuGet.Configuration.IPackageSourceProvider sourceProvider, System.String packagePath, System.String source, System.String apiKey, System.String symbolSource, System.String symbolApiKey, System.Int32 timeoutSeconds, System.Boolean disableBuffering, System.Boolean noSymbols, NuGet.Common.ILogger logger) [0x00133] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.CommandLine.PushCommand.ExecuteCommandAsync () [0x001b0] in <d0f788a4af354971807e5d8ca6fc682e>:0 <---

##[error]The nuget command failed with exit code(1) and error(System.AggregateException: One or more errors occurred. (Unable to load the service index for source https://pkgs.dev.azure.com/sachabarber2019/_packaging/anotherfeed/nuget/v3/index.json.) ---> NuGet.Protocol.Core.Types.FatalProtocolException: Unable to load the service index for source https://pkgs.dev.azure.com/sachabarber2019/_packaging/anotherfeed/nuget/v3/index.json. ---> System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (Not Found - The feed with ID 'anotherfeed' doesn't exist. (DevOps Activity ID: 9E8C7E28-9D51-44A1-9286-8F6F839BCBD6)).
  at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode () [0x00040] in <7ecf813f2d314058b05c6c092c47b77a>:0 
  at NuGet.Protocol.HttpSource+<>c__DisplayClass12_0`1[T].<GetAsync>b__0 (System.Threading.CancellationToken lockedToken) [0x004a8] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Common.ConcurrencyUtilities.ExecuteWithFileLockedAsync[T] (System.String filePath, System.Func`2[T,TResult] action, System.Threading.CancellationToken token) [0x0024a] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.HttpSource.GetAsync[T] (NuGet.Protocol.HttpSourceCachedRequest request, System.Func`2[T,TResult] processAsync, NuGet.Common.ILogger log, System.Threading.CancellationToken token) [0x000ed] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.ServiceIndexResourceV3Provider.GetServiceIndexResourceV3 (NuGet.Protocol.Core.Types.SourceRepository source, System.DateTime utcNow, NuGet.Common.ILogger log, System.Threading.CancellationToken token) [0x00207] in <d0f788a4af354971807e5d8ca6fc682e>:0 
   --- End of inner exception stack trace ---
  at NuGet.Protocol.ServiceIndexResourceV3Provider.GetServiceIndexResourceV3 (NuGet.Protocol.Core.Types.SourceRepository source, System.DateTime utcNow, NuGet.Common.ILogger log, System.Threading.CancellationToken token) [0x002d5] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.ServiceIndexResourceV3Provider.TryCreate (NuGet.Protocol.Core.Types.SourceRepository source, System.Threading.CancellationToken token) [0x00233] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.Core.Types.SourceRepository.GetResourceAsync[T] (System.Threading.CancellationToken token) [0x000b8] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.PackageUpdateResourceV3Provider.TryCreate (NuGet.Protocol.Core.Types.SourceRepository source, System.Threading.CancellationToken token) [0x0007d] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.Core.Types.SourceRepository.GetResourceAsync[T] (System.Threading.CancellationToken token) [0x000b8] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.Core.Types.SourceRepository.GetResourceAsync[T] () [0x0006e] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Commands.CommandRunnerUtility.GetPackageUpdateResource (NuGet.Configuration.IPackageSourceProvider sourceProvider, System.String source) [0x000f1] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Commands.PushRunner.Run (NuGet.Configuration.ISettings settings, NuGet.Configuration.IPackageSourceProvider sourceProvider, System.String packagePath, System.String source, System.String apiKey, System.String symbolSource, System.String symbolApiKey, System.Int32 timeoutSeconds, System.Boolean disableBuffering, System.Boolean noSymbols, NuGet.Common.ILogger logger) [0x00133] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.CommandLine.PushCommand.ExecuteCommandAsync () [0x001b0] in <d0f788a4af354971807e5d8ca6fc682e>:0 
   --- End of inner exception stack trace ---
  at System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00011] in <285579f54af44a2ca048dad6be20e190>:0 
  at System.Threading.Tasks.Task.Wait (System.Int32 millisecondsTimeout, System.Threading.CancellationToken cancellationToken) [0x00043] in <285579f54af44a2ca048dad6be20e190>:0 
  at System.Threading.Tasks.Task.Wait () [0x00000] in <285579f54af44a2ca048dad6be20e190>:0 
  at NuGet.CommandLine.Command.Execute () [0x000bd] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.CommandLine.Program.MainCore (System.String workingDirectory, System.String[] args) [0x001f3] in <d0f788a4af354971807e5d8ca6fc682e>:0 
---> (Inner Exception #0) NuGet.Protocol.Core.Types.FatalProtocolException: Unable to load the service index for source https://pkgs.dev.azure.com/sachabarber2019/_packaging/anotherfeed/nuget/v3/index.json. ---> System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (Not Found - The feed with ID 'anotherfeed' doesn't exist. (DevOps Activity ID: 9E8C7E28-9D51-44A1-9286-8F6F839BCBD6)).
  at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode () [0x00040] in <7ecf813f2d314058b05c6c092c47b77a>:0 
  at NuGet.Protocol.HttpSource+<>c__DisplayClass12_0`1[T].<GetAsync>b__0 (System.Threading.CancellationToken lockedToken) [0x004a8] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Common.ConcurrencyUtilities.ExecuteWithFileLockedAsync[T] (System.String filePath, System.Func`2[T,TResult] action, System.Threading.CancellationToken token) [0x0024a] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.HttpSource.GetAsync[T] (NuGet.Protocol.HttpSourceCachedRequest request, System.Func`2[T,TResult] processAsync, NuGet.Common.ILogger log, System.Threading.CancellationToken token) [0x000ed] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.ServiceIndexResourceV3Provider.GetServiceIndexResourceV3 (NuGet.Protocol.Core.Types.SourceRepository source, System.DateTime utcNow, NuGet.Common.ILogger log, System.Threading.CancellationToken token) [0x00207] in <d0f788a4af354971807e5d8ca6fc682e>:0 
   --- End of inner exception stack trace ---
  at NuGet.Protocol.ServiceIndexResourceV3Provider.GetServiceIndexResourceV3 (NuGet.Protocol.Core.Types.SourceRepository source, System.DateTime utcNow, NuGet.Common.ILogger log, System.Threading.CancellationToken token) [0x002d5] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.ServiceIndexResourceV3Provider.TryCreate (NuGet.Protocol.Core.Types.SourceRepository source, System.Threading.CancellationToken token) [0x00233] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.Core.Types.SourceRepository.GetResourceAsync[T] (System.Threading.CancellationToken token) [0x000b8] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.PackageUpdateResourceV3Provider.TryCreate (NuGet.Protocol.Core.Types.SourceRepository source, System.Threading.CancellationToken token) [0x0007d] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.Core.Types.SourceRepository.GetResourceAsync[T] (System.Threading.CancellationToken token) [0x000b8] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Protocol.Core.Types.SourceRepository.GetResourceAsync[T] () [0x0006e] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Commands.CommandRunnerUtility.GetPackageUpdateResource (NuGet.Configuration.IPackageSourceProvider sourceProvider, System.String source) [0x000f1] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.Commands.PushRunner.Run (NuGet.Configuration.ISettings settings, NuGet.Configuration.IPackageSourceProvider sourceProvider, System.String packagePath, System.String source, System.String apiKey, System.String symbolSource, System.String symbolApiKey, System.Int32 timeoutSeconds, System.Boolean disableBuffering, System.Boolean noSymbols, NuGet.Common.ILogger logger) [0x00133] in <d0f788a4af354971807e5d8ca6fc682e>:0 
  at NuGet.CommandLine.PushCommand.ExecuteCommandAsync () [0x001b0] in <d0f788a4af354971807e5d8ca6fc682e>:0 <---)
##[error]Packages failed to publish
##[section]Finishing: NuGet push

推荐答案

经过 1 小时的检查,我现在发现了这个问题.我可以看到,默认情况下,当您在 AzureDevOps 项目上创建基于工件的 Feed 时,它仅对 Project collection Build Service 拥有权限,而对 您的项目 Build Services 没有权限.

I have found the trouble with this at moment, after 1 hour of checks. I can see that by default, when you create a Feed over Artifacts on your AzureDevOps project, it's only have permission for Project collection Build Service but not for your project Build Services.

让我们检查下图并与您的 Feed 设置进行比较.

Let's check the image below and compare with your Feed Settings.

通过工件页面右侧的齿轮按钮转到Feed Settings/Permission

Going toFeed Settings/Permission through Gear Button on right side of artifacts page

这是我的任务代码

- task: NuGetCommand@2
  displayName: 'nuget push'
  inputs:
    command: 'push'
    feedsToUse: 'select'
    packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg'
    nuGetFeedType: 'internal'
    vstsFeed: kreaCore/kreaCore
    publishVstsFeed: kreaCore/kreaCore
    versioningScheme: 'off'
    allowPackageConflicts: true

预期的结果是

这是一个 有用的教程,用于复制我的测试.

This is a useful tutorial for replicate my test.

干杯!!

这篇关于Azure DevOps 将 Nuget 发布到托管源的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆