4
votes

Pousser le package Nuget vers Azure DevOps

J'essaie de pousser un package Nuget vers Azure DevOps à partir d'un MAC.

J'ai créé un flux d'artefacts Azure DevOps et essayé de pousser un package en utilisant:

error: Unable to load the service index for source https://pkgs.dev.azure.com/mdmoura/_packaging/Moleky/nuget/v3/index.json.
error: Response status code does not indicate success: 401 (Unauthorized).

J'ai généré le jeton comme suit:

https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops

J'ai donné un accès complet à l'utilisateur lors de la génération du jeton.

J'ai toujours l'erreur: p>

dotnet nuget push 
  --source "https://pkgs.dev.azure.com/MyProject/_packaging/MyFeed/nuget/v2" 
  --api-key "MyToken" 
  "MyPackage.nupkg"

J'ai essayé différentes options mais j'obtiens toujours cette erreur ...

Qu'est-ce qu'il me manque peut-être?


7 commentaires

pourquoi n'utilisez-vous pas la tâche intégrée?


Avez-vous essayé d'obtenir le Jeton PAT du portail Azure Devops?


Y a-t-il un proxy sur votre ordinateur? Si oui, essayez de le supprimer et testez à nouveau. Et pouvez-vous ouvrir le chemin source directement dans le navigateur?


@TomSun Oui, c'est comme ça que j'ai obtenu le jeton ...


@ 4c74356b41 Que voulez-vous dire? Peux-tu expliquer?


@ LeoLiu-MSFT Non, il n'y a pas de proxy. Oui, je peux ouvrir à la fois V3 et V2 sur le navigateur sans problème. Mais quand je pousse le paquet, j'obtiens l'erreur non autorisée.


J'ai le même problème, cela se produit car cela nécessite une première connexion avec les informations d'identification Microsoft, il affiche une fenêtre contextuelle pour le faire, le problème est que je veux ajouter cela dans le pipeline de publication et je suis resté coincé avec l'erreur 401 .


3 Réponses :


-3
votes

Pourquoi exécutez-vous dotnet nuget push au lieu de nuget push ?

Remarque: l'API_KEY ici peut être n'importe quelle valeur non vide, selon la documentation: https://docs.microsoft.com/en-us/azure/devops/artifacts/get-started-nuget?view=azure- devops & tabs = new-nav


3 commentaires

J'utilise dotnet push car je fonctionne sur MAC et nuget est uniquement pour Windows. Nuget dotnet n'est-il pas juste nuget?


Ce que Rob essayait de dire, c'est que le jeton est ignoré lorsque vous utilisez la ligne de commande nuget ( docs.microsoft.com/en-us/azure/devops/artifacts/nuget/… ). Je sais pertinemment que c'est vrai et qu'une pression avec une clé API factice fonctionne avec nuget. Je n'ai pas essayé avec dotnet cependant. Quoi qu'il en soit, ici votre problème est lié à PAT, pas à la clé API ^^


En comparant les deux méthodes, vous devez d'abord faire une source d'ajout de nuget ( docs.microsoft.com/en-us/dotnet/core/tools/... ) et utilisez votre jeton (PAT) comme mot de passe. Ensuite seulement, vous pouvez pousser le paquet avec une clé API factice



0
votes

Le pipeline n'est pas authentifié dans le flux. Vous devez ajouter une tâche d'authentification avant d'essayer de pousser des packages nuget. Essayez la

- task: NuGetAuthenticate@0
  displayName: 'Authenticate in NuGet feed'
- script: dotnet nuget push $(PATH_PIPELINE_ARTIFACT_NAME)/**/*.nupkg --source MyProject --api-key MyToken
  displayName: 'Uploads nuGet packages'

suivante. Notez la tâche NuGetAuthenticate @ 0 pour vous authentifier au préalable. Rien d'autre n'est requis pour s'authentifier, car il semble que vous utilisez des artefacts Azure DevOps. Sinon, vous devrez créer une connexion (plus d'informations https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/package/nuget-authenticate?view=azure-devops )

Selon la commande dotnet nuget push notice, j'ai écrit un chemin complet avec une expression régulière ** / *. nupkg . Utilisez ou remplacez cette variable PATH_PIPELINE_ARTIFACT_NAME par le chemin où se trouvent actuellement vos packages nuGet à télécharger. L'expression régulière vous permettra de publier TOUS les packages nuGet dans ce dossier.


0 commentaires

0
votes

Pourriez-vous essayer de faire ceci:

dotnet nuget push "MyPackage.nupkg" --source MyFeed --api-key az

Et puis

dotnet nuget add source "https://pkgs.dev.azure.com/MyProject/_packaging/MyFeed/nuget/v2" --name MyFeed --username "YourUserName" --password "YourPatToken"

C'est l'équivalence de la méthode nuget décrite ici: https://docs.microsoft.com/en-us/azure/devops/artifacts/nuget/publish?view=azure-devops#create-and-publish-your-own-nuget-package


0 commentaires