Découvrez des méthodes efficaces pour authentifier et consommer des packages NuGet privés hébergés sur GitHub dans les pipelines Azure DevOps à l’aide de Docker et du SDK .NET. --- Cette vidéo est basée sur la question https://stackoverflow.com/q/79116113/ posée par l'utilisateur 'David Keaveny' ( https://stackoverflow.com/u/319980/ ) et sur la réponse https://stackoverflow.com/a/79116300/ fournie par l'utilisateur 'Kevin Lu-MSFT' ( https://stackoverflow.com/u/13464420/ ) sur le site Web « Stack Overflow ». Merci à ces formidables utilisateurs et à la communauté Stackexchange pour leurs contributions. Visitez ces liens pour accéder au contenu original et à d'autres détails, tels que les solutions alternatives, les dernières mises à jour/développements sur le sujet, les commentaires, l'historique des révisions, etc. Par exemple, le titre original de la question était : Consommation d'un flux NuGet privé hébergé sur GitHub à partir d'un pipeline Azure Devops. De plus, le contenu (sauf la musique) sous licence CC BY-SA https://meta.stackexchange.com/help/licensing La publication de la question originale est sous licence « CC BY-SA 4.0 » ( https://creativecommons.org/licenses/by-sa/4.0/ ), et le message de réponse original est sous licence « CC BY-SA 4.0 » ( https://creativecommons.org/licenses/by-sa/4.0/ ). Si quelque chose vous semble bizarre, n'hésitez pas à m'envoyer un commentaire sous cette vidéo. --- Introduction La consommation de packages NuGet privés hébergés sur GitHub à partir d'un pipeline Azure DevOps peut être difficile en raison de la complexité de l'authentification. Bien que les workflows GitHub Actions gèrent cela de manière fluide, Azure DevOps nécessite un traitement spécial pour transmettre les informations d'identification appropriées lors des opérations de restauration, en particulier dans les versions basées sur Docker. Le problème de l'utilisation d'une connexion au service NuGet et d'une tâche NuGetAuthenticate@ 1 dans Azure DevOps semble simple, mais le jeton d'authentification généré par cette tâche n'est pas directement utilisable en tant que jeton d'accès personnel (PAT) GitHub dans les builds Docker pour la restauration dotnet. Cela entraîne des erreurs 401 non autorisées lors de la restauration de packages à partir du flux GitHub privé. Solutions Deux approches fiables résolvent ce problème : Méthode 1 : injection PAT manuelle sans NuGetAuthenticate Si vous gérez un nuget.config avec le flux GitHub : N'utilisez pas NuGetAuthenticate@ 1 dans votre pipeline Azure DevOps. Stockez en toute sécurité votre GitHub PAT en tant que variable de pipeline secrète (par exemple, GithubPAT). Transmettez ce PAT comme argument de construction Docker. Dans votre Dockerfile, mettez à jour la source NuGet avec le PAT explicite pendant la construction. Extrait Azure DevOps YAML : [[Voir la vidéo pour révéler ce texte ou cet extrait de code]] Extrait du fichier Dockerfile : [[Voir la vidéo pour révéler ce texte ou cet extrait de code]] Méthode 2 : Utilisation de NuGetAuthenticate avec VSS_NUGET_EXTERNAL_FEED_ENDPOINTS Si vous préférez conserver la tâche NuGetAuthenticate@ 1 : supprimez la source GitHub de votre nuget.config. Dans votre Dockerfile : supprimez la commande dotnet nuget update source. Installez le fournisseur d'informations d'identification Azure Artifacts. Définissez la variable d'environnement VSS_NUGET_EXTERNAL_FEED_ENDPOINTS avec les informations d'identification pour votre flux GitHub. Exemple de Dockerfile : [[Voir la vidéo pour révéler ce texte ou cet extrait de code]] Extrait Azure DevOps YAML : [[Voir la vidéo pour révéler ce texte ou cet extrait de code]] Résumé L'utilisation directe du jeton NuGetAuthenticate@ 1 dans Docker pour les flux GitHub ne fonctionne pas telle quelle. Transmettez manuellement un vrai GitHub PAT pour la mise à jour dotnet nuget dans Docker (méthode 1). Ou configurez VSS_NUGET_EXTERNAL_FEED_ENDPOINTS avec le fournisseur d'informations d'identification dans Docker lors de l'utilisation de NuGetAuthenticate@ 1 (méthode 2). Cela garantit que votre pipeline Azure DevOps peut restaurer en toute sécurité les packages NuGet privés hébergés sur GitHub dans les versions conteneurisées.
Les informations fournies ne constituent pas des conseils commerciaux. kdj.com n’assume aucune responsabilité pour les investissements effectués sur la base des informations fournies dans cet article. Les crypto-monnaies sont très volatiles et il est fortement recommandé d’investir avec prudence après une recherche approfondie!
Si vous pensez que le contenu utilisé sur ce site Web porte atteinte à vos droits d’auteur, veuillez nous contacter immédiatement (info@kdj.com) et nous le supprimerons dans les plus brefs délais.