Lernen Sie effektive Methoden zum Authentifizieren und Nutzen privater, von GitHub gehosteter NuGet-Pakete in Azure DevOps-Pipelines mithilfe von Docker und .NET SDK kennen. --- Dieses Video basiert auf der Frage https://stackoverflow.com/q/79116113/ des Benutzers „David Keaveny“ ( https://stackoverflow.com/u/319980/ ) und auf der Antwort https://stackoverflow.com/a/79116300/ des Benutzers „Kevin Lu-MSFT“ ( https://stackoverflow.com/u/13464420/ ) auf der Website „Stack Overflow“. Vielen Dank an diese großartigen Benutzer und die Stackexchange-Community für ihre Beiträge. Besuchen Sie diese Links für Originalinhalte und weitere Details, wie alternative Lösungen, neueste Updates/Entwicklungen zum Thema, Kommentare, Revisionsverlauf usw. Der ursprüngliche Titel der Frage lautete beispielsweise: Konsumieren eines auf GitHub gehosteten privaten NuGet-Feeds aus einer Azure Devops-Pipeline. Außerdem sind Inhalte (außer Musik) unter CC BY-SA lizenziert https://meta.stackexchange.com/help/licensing. Der ursprüngliche Fragenbeitrag ist unter „CC BY-SA 4.0“ lizenziert ( https://creativecommons.org/licenses/by-sa/4.0/ )-Lizenz und der ursprüngliche Antwortbeitrag ist unter der „CC BY-SA 4.0“-Lizenz ( https://creativecommons.org/licenses/by-sa/4.0/ ) lizenziert. Wenn Ihnen etwas nicht stimmt, können Sie mir gerne einen Kommentar unter diesem Video hinterlassen. --- Einführung Die Nutzung privater, auf GitHub gehosteter NuGet-Pakete aus einer Azure DevOps-Pipeline kann aufgrund der Komplexität der Authentifizierung eine Herausforderung darstellen. Während GitHub Actions-Workflows dies reibungslos bewältigen, erfordert Azure DevOps eine spezielle Handhabung, um bei Wiederherstellungsvorgängen die richtigen Anmeldeinformationen zu übergeben, insbesondere bei Docker-basierten Builds. Das Problem bei der Verwendung einer NuGet-Dienstverbindung und der NuGetAuthenticate@ 1-Aufgabe in Azure DevOps scheint unkompliziert zu sein, aber das von dieser Aufgabe ausgegebene Authentifizierungstoken kann nicht direkt als GitHub Personal Access Token (PAT) in Docker-Builds für die Dotnet-Wiederherstellung verwendet werden. Dies führt zu 401 Unauthorized-Fehlern beim Wiederherstellen von Paketen aus dem privaten GitHub-Feed. Lösungen Zwei zuverlässige Ansätze beheben dieses Problem: Methode 1: Manuelle PAT-Injektion ohne NuGetAuthenticate Wenn Sie eine nuget.config mit dem GitHub-Feed verwalten: Verwenden Sie NuGetAuthenticate@ 1 nicht in Ihrer Azure DevOps-Pipeline. Speichern Sie Ihre GitHub-PAT sicher als geheime Pipeline-Variable (z. B. GithubPAT). Übergeben Sie dieses PAT als Docker-Build-Argument. Aktualisieren Sie in Ihrer Docker-Datei die NuGet-Quelle während des Builds mit dem expliziten PAT. Azure DevOps YAML-Snippet: [[Siehe Video, um diesen Text oder Code-Snippet anzuzeigen]] Dockerfile-Auszug: [[Siehe Video, um diesen Text oder Code-Snippet anzuzeigen]] Methode 2: Verwenden von NuGetAuthenticate mit VSS_NUGET_EXTERNAL_FEED_ENDPOINTS Wenn Sie die NuGetAuthenticate@ 1-Aufgabe lieber beibehalten möchten: Entfernen Sie die GitHub-Quelle aus Ihrer nuget.config. In Ihrer Docker-Datei: Entfernen Sie den Befehl dotnet nuget update source. Installieren Sie den Azure Artifacts-Anmeldeinformationsanbieter. Legen Sie die Umgebungsvariable VSS_NUGET_EXTERNAL_FEED_ENDPOINTS mit Anmeldeinformationen für Ihren GitHub-Feed fest. Dockerfile-Beispiel: [[Siehe Video, um diesen Text oder Codeausschnitt zu enthüllen]] Azure DevOps YAML-Snippet: [[Siehe Video, um diesen Text oder Codeausschnitt zu enthüllen]] Zusammenfassung Die direkte Verwendung des NuGetAuthenticate@ 1-Tokens in Docker für GitHub-Feeds funktioniert nicht wie sie ist. Übergeben Sie manuell einen echten GitHub-PAT für das Dotnet-Nuget-Update in Docker (Methode 1). Oder konfigurieren Sie VSS_NUGET_EXTERNAL_FEED_ENDPOINTS mit dem Anmeldeinformationsanbieter in Docker, wenn Sie NuGetAuthenticate@ 1 (Methode 2) verwenden. Dadurch wird sichergestellt, dass Ihre Azure DevOps-Pipeline private NuGet-Pakete, die auf GitHub gehostet werden, in Container-Builds sicher wiederherstellen kann.
Die bereitgestellten Informationen stellen keine Handelsberatung dar. kdj.com übernimmt keine Verantwortung für Investitionen, die auf der Grundlage der in diesem Artikel bereitgestellten Informationen getätigt werden. Kryptowährungen sind sehr volatil und es wird dringend empfohlen, nach gründlicher Recherche mit Vorsicht zu investieren!
Wenn Sie glauben, dass der auf dieser Website verwendete Inhalt Ihr Urheberrecht verletzt, kontaktieren Sie uns bitte umgehend (info@kdj.com) und wir werden ihn umgehend löschen.