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:
[~ # ~] 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:
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.
Alors:
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})).
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:
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