web-dev-qa-db-fra.com

Le pipeline de projet Azure DevOps ne peut pas accéder au package NuGet à partir du flux d'artefact dans un autre projet

Mise à jour 20-févr.-2020

Résumé

La génération du pipeline Azure DevOps n'a pas pu trouver le package NuGet à partir de notre flux privé sous Artefacts.

Notre environnement Azure DevOps

Dans Azure, nous avons notre "espace" entreprise: dev.Azure.com/OurCompany

Sous cela, nous avons plusieurs projets, alors par exemple, imaginez ces trois:

  • Vert: cela contient des applications d'un certain type
  • Bleu: cela contient des applications d'un type différent
  • Rouge: il contient notre code d'assistance "commun"

[~ # ~] rouge [~ # ~]

RED contient tous nos codes d'assistance communs sont les DLL consommées par les applications en VERT et en BLEU. Ceux-ci sont mis à disposition sous forme de packages NuGet.

Sous les artefacts de RED, nous voyons un "flux à portée organisationnelle" appelé "OurCompany". Nous avons compris que nous ne pouvions pas l'utiliser car ces packages NuGet doivent être disponibles pour tout le monde dans OurCompany, ce qui signifie non seulement sur Azure, mais également sur nos machines DeskTop de notre réseau d'entreprise (où nous exécutons Visual Studio). Je ne pense pas que le "fil à portée organisationnelle" soit exposé à notre réseau d'entreprise.

Nous avons donc créé un nouveau flux sous les artefacts de RED. Lorsque j'affiche les autorisations, je vois les entrées suivantes:

  • {me}: (Propriétaire)
  • [OurCompany]\Administrateurs de la collection de projets: (Propriétaire)
  • [RED]\Administrateurs de projet: (Propriétaire)
  • RED Build Service (OurCompany): (Contributeur)
  • Service de création de collection de projets (OurCompany): (Contributeur)
  • [RED]\Contributors (Contributeur)

Entreprise

Donc, de retour dans Corporate, nous ajoutons le flux de package NuGet à notre Visual Studio et il peut ensuite extraire les packages NuGet d'Azure.

VERT et BLEU

Ici, nous avons nos produits. Nous créons un pipeline de build et nous ajoutons une étape de restauration NuGet:

- task: NuGetCommand@2
  displayName: 'Restore for Our Application'
  inputs:
    command: 'restore'
    restoreSolution: '**/*.sln'
    feedsToUse: 'select'
    vstsFeed: '{Guid1}/{Guid2}'

Les deux guides ont été remplis lorsque nous avons sélectionné le fil Azure Artifacts dans la liste déroulante.

Échec de la restauration de NuGet VERT ou BLEU

C'est donc là que nous rencontrons notre problème. Lorsque l'étape de restauration NuGet s'exécute, elle échoue avec le message suivant:

Unable to find version 'nnnn.n.n' of package 'TheNuGetPackage'.

La sortie du journal est vaste, mais les lignes saillantes semblent être:

2020-02-18T18:36:35.2838118Z [command]C:\hostedtoolcache\windows\NuGet\5.4.0\x64\nuget.exe sources Add -NonInteractive -Name {Guid2} -Source https://pkgs.dev.Azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json
-ConfigFile d:\a\1\Nuget\tempNuGet_356.config 2020-02-18T18:36:35.7513495Z Package source with Name: {Guid2} added successfully. 2020-02-18T18:36:41.1671856Z     [CredentialProvider.183638]Command-line v0.1.20+a5d37185a1a95acb4f0g997b9c23cab99508: "d:\a\_tasks\NuGetCommand_333b11bd-d341-40d9-bdbd-b32d5ce6f23b\2.164.0\CredentialProviderV2\plugins\netfx\CredentialProvider.Microsoft\CredentialProvider.Microsoft.exe"
-Plugin 2020-02-18T18:36:41.1673979Z     [CredentialProvider]Handling 'Request' 'GetAuthenticationCredentials'. Time elapsed in ms: 3 - Payload: {"Uri":"https://pkgs.dev.Azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json","IsRetry":false,"IsNonInteractive":true,"CanShowDialog":true} 2020-02-18T18:36:41.1674299Z     [CredentialProvider]Handling auth request, Uri: https://pkgs.dev.Azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json, IsRetry: False, IsNonInteractive: True, CanShowDialog: True 2020-02-18T18:36:41.1674465Z     [CredentialProvider]URI: https://pkgs.dev.Azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json 2020-02-18T18:36:41.1674818Z     [CredentialProvider]Skipping NuGetCredentialProvider.CredentialProviders.VstsBuildTaskServiceEndpoint.VstsBuildTaskServiceEndpointCredentialProvider, cannot provide credentials for https://pkgs.dev.Azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json 2020-02-18T18:36:41.1675261Z     [CredentialProvider]VstsBuildTaskCredentialProvider - https://dev.Azure.com/OurCompany/ 2020-02-18T18:36:41.1675425Z     [CredentialProvider]VstsBuildTaskCredentialProvider - https://pkgs.dev.Azure.com/OurCompany/ 2020-02-18T18:36:41.1675722Z    [CredentialProvider]VstsBuildTaskCredentialProvider - https://pkgs.dev.Azure.com/OurCompany/ 2020-02-18T18:36:41.1676021Z    [CredentialProvider]VstsBuildTaskCredentialProvider - https://pkgs.dev.Azure.com/OurCompany/ 2020-02-18T18:36:41.1676161Z    [CredentialProvider]VstsBuildTaskCredentialProvider - Matched prefix: https://pkgs.dev.Azure.com/OurCompany/ 2020-02-18T18:36:41.1676330Z    [CredentialProvider]VstsBuildTaskCredentialProvider - Found credentials for endpoint https://pkgs.dev.Azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json 2020-02-18T18:36:41.1680820Z   https://pkgs.dev.Azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json: Unable to load the service index for source https://pkgs.dev.Azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json. 2020-02-18T18:36:41.1680996Z   Response status code does not indicate success: 404 (Not Found - VS800075: The project with id 'vstfs:///Classification/TeamProject/{Guid1}' does not exist, or you do not have permission to access it. (DevOps Activity ID: 0628EDE7-6E7E-465D-A6AE-7B6B0AA065D2)).

Cela me semble être une question d'autorisations. Mais ce qui semble étrange, c'est que le flux d'artefacts dans RED était découvrable lors de la création du Pipeline Build YAML alors que nous n'avons pas les autorisations pour l'utiliser.

J'ai essayé d'ajouter des autorisations au flux en RED. En cliquant sur "Ajouter des utilisateurs/groupes". J'ai trouvé ce qui suit et les ai ajoutés en tant que lecteur ou contributeur, mais sans succès.

  1. [GREEN]\Équipe verte
  2. Services de construction VERTE

Alors:

  1. Est-ce que je vais dans le mauvais sens? Si tel est le cas, que dois-je faire (je pensais avoir suivi de près les instructions Azure DevOps)
  2. Est-ce que je procède de la bonne façon? Si oui, qu'est-ce que j'ai manqué?

Mise à jour # 1

Message d'erreur détaillé de l'étape de restauration

https://api.nuget.org/v3/index.json : Le package 'Package1.nnnn.nn' est introuvable sur la source ' https://api.nuget.org /v3/index.json '.
https://pkgs.dev.Azure.com/OurCompany/ {Guid1}/_packaging/{Guid2} /nuget/v3/index.json: Impossible de charger l'index du service pour la source https://pkgs.dev.Azure.com/OurCompany/ {Guid1}/_packaging/{Guid2} /nuget/v3/index.json. Le code d'état de la réponse n'indique pas le succès: 404 (introuvable - VS800075: le projet avec l'ID 'vstfs: /// Classification/TeamProject/{Guid1}' n'existe pas ou vous n'êtes pas autorisé à y accéder. (Activité DevOps ID: {Guid})).

4
DrGriff

Dans mon LibsProject j'ai un LibsFeed (OP's RED ), que je voulais utiliser dans un pipeline dans mon ConsumingProject.

J'ai dû ajouter les autorisations suivantes pour le faire fonctionner:

  • LibsFeed: Ajouter ConsumingProject Build Service en tant que contributeur (Read automatiquement changé en contributeur)
  • LibsProject: Ajouter ConsumingProject Team à LibsProject Team sous LibsProject -> Paramètres du projet -> Équipe

Je ne peux même pas activer la solution d'OP, même avec tous les droits d'administrateur imaginables

Limiter la portée des autorisations de travail au projet actuel

1
Heinzlmaen