了解使用 Docker 和 .NET SDK 在 Azure DevOps 管道中驗證和使用私有 GitHub 託管的 NuGet 套件的有效方法。 --- 影片是基於使用者「David Keaveny」提出的問題 https://stackoverflow.com/q/79116113/ (https://stackoverflow.com/u/319980/) 以及使用者「Kevin Lu-MSFT」提供的答案 https://stackoverflow.com/a/79116300/116300/20/13479116300/0//16364/20232/1347207375730>20735372 Overflow」網站上。感謝這些優秀的用戶和 Stackexchange 社群的貢獻。請訪問這些連結以獲取原始內容和任何更多詳細信息,例如替代解決方案、主題的最新更新/開發、評論、修訂歷史記錄等。例如,問題的原始標題是:從 Azure Devops 管道使用 GitHub 上託管的私有 NuGet 來源 另外,根據 CC BY-SA 許可的內容(音樂除外)https://meta.stackexchange.com/help/licensing 原始問題帖子根據“CC BY-SA 4.0”獲得許可(://creativecomlicmons.org/M. BY-SA 4.0」( https://creativecommons.org/licenses/by-sa/4.0/ )授權取得授權。如果您覺得有任何不對勁,請隨時在該影片下給我留言。 --- 簡介 由於驗證的複雜性,從 Azure DevOps 管道使用 GitHub 上託管的私人 NuGet 套件可能具有挑戰性。雖然 GitHub Actions 工作流程可以順利處理此問題,但 Azure DevOps 需要特殊處理才能在復原作業期間傳遞正確的憑證,尤其是在基於 Docker 的建置中。在 Azure DevOps 中使用 NuGet 服務連線和 NuGetAuthenticate@ 1 任務的問題似乎很簡單,但此任務輸出的驗證令牌不能直接用作 Docker 建置內的 GitHub 個人存取權杖 (PAT) 以進行 dotnet 復原。從私有 GitHub feed 還原套件時,這會導致 401 Unauthorized 錯誤。解決方案 有兩種可靠的方法可以解決此問題: 方法 1:不使用 NuGetAuthenticate 進行手動 PAT 注入 如果使用 GitHub 來源維護 nuget.config:請勿在 Azure DevOps 管道中使用 NuGetAuthenticate@ 1。將您的 GitHub PAT 安全地儲存為秘密管道變數(例如,GithubPAT)。將此 PAT 作為 Docker 建置參數傳遞。在 Dockerfile 中,在建置期間使用明確 PAT 更新 NuGet 來源。 Azure DevOps YAML 程式碼片段:[[檢視影片以顯示此文字或程式碼片段]] Dockerfile 摘錄:[[請參考影片以顯示此文字或程式碼片段]] 方法 2:將 NuGetAuthenticate 與 VSS_NUGET_EXTERNAL_FEED_ENDPOgetS 一起使用 程式來源 如果您希望保留 Nucuth 任務在 Dockerfile 中:刪除 dotnet nuget update source 指令。安裝 Azure Artifacts 憑證提供者。使用 GitHub feed 的憑證設定 VSS_NUGET_EXTERNAL_FEED_ENDPOINTS 環境變數。 Dockerfile 範例:[[檢視影片以顯示此文字或程式碼片段]] Azure DevOps YAML 程式碼片段:[[請參閱影片以顯示此文字或程式碼片段]] 摘要 在 Docker 內直接使用 NuGetAuthenticate@ 1 令牌來取得 GitHub 原始碼無法按原樣工作。手動傳遞真正的 GitHub PAT 以在 Docker 內進行 dotnet nuget 更新(方法 1)。或在使用 NuGetAuthenticate@ 1 時使用 Docker 中的憑證提供者來設定 VSS_NUGET_EXTERNAL_FEED_ENDPOINTS(方法 2)。這可確保您的 Azure DevOps 管道可以在容器化建置中安全地還原託管在 GitHub 上的私有 NuGet 套件。
免責聲明:info@kdj.com
所提供的資訊並非交易建議。 kDJ.com對任何基於本文提供的資訊進行的投資不承擔任何責任。加密貨幣波動性較大,建議您充分研究後謹慎投資!
如果您認為本網站使用的內容侵犯了您的版權,請立即聯絡我們(info@kdj.com),我們將及時刪除。