Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022
本文將引導你如何透過兩種認證流程連接你的訂閱源與發佈套件:針對你組織內的訂閱源使用Azure Artifacts憑證提供者,以及用於不同組織中託管訂閱源的個人存取權杖(PAT)。
先決條件
- 一個 Azure DevOps 組織。
- An Azure DevOps project.
- An Azure Artifacts feed.
-
nuget.exe
4.8.0.5385或更新版本。 Azure Artifacts 推薦 NuGet5.5.x或更新版本,以獲得最佳的相容性和穩定性。 - 要發佈套件,您必須是 Feed Publisher(貢獻者)或以上。
設定 Azure Artifacts Credential Provider
Azure Artifacts 憑證提供者能安全認證您的 Azure Artifacts 資料。 要搭配 nuget.exe使用,必須先將其加入 NuGet 的外掛搜尋路徑。 詳情請參見 外掛安裝與發現。 外掛加入後,請依照作業系統的安裝步驟操作:
請使用以下方法之一安裝 Azure Artifacts 憑證提供者:
手動安裝
擷取 zip 檔案。
將解壓壓縮檔中的資料夾複製
netfx到%UserProfile%/.nuget/plugins/。 這個netfx資料夾是為了 nuget.exe 相容性所必需的。
使用 Helper 腳本安裝
或者,你也可以使用自動輔助腳本來簡化安裝流程。 確保你有 PowerShell 5.1 或更新版本,然後執行:
iex "& { $(irm https://aka.ms/install-artifacts-credprovider.ps1) } -AddNetfx"
欲了解更多資訊,請參閱 Azure Artifacts憑證提供者 資料庫。
連接到資料來源
在發佈套件之前,請先設定專案並連結到你的訂閱源,步驟如下:
登入您的 Azure DevOps 組織,然後流覽至您的專案。
選取 工件,然後從下拉功能表中選取您的資訊來源。
選取 [連線至摘要],然後從左側瀏覽窗格中選取 [NuGet.exe]。
在你的專案中新增一個
nuget.config檔案,放在和你的.csprojor.sln檔案同一個資料夾裡。 將提供的 XML 代碼段貼到您的檔案中。 代碼段看起來應該如下所示:組織範圍的動態消息:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <clear /> <add key="<SOURCE_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" /> </packageSources> </configuration>專案範圍的資訊流:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <clear /> <add key="<SOURCE_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" /> </packageSources> </configuration>
登入您的 Azure DevOps 伺服器,然後流覽至您的專案。
選取 [工件],接着選取您的資料流。
選取 [連接到動態消息],然後從左側導覽窗格中選取 [NuGet.exe]。
在你的專案中加入
nuget.config一個檔案,放在與你的.csprojor.sln檔案相同的資料夾,然後將提供的 XML 片段貼到你的檔案中。
發佈到同一組織的訂閱源
在使用 Azure Artifacts 憑證提供者設定nuget.config並驗證後,執行以下指令將套件發佈到你的訂閱源。 將佔位符替換為適當的值:
nuget push <PACKAGE_PATH> -Source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -ApiKey <ANY_STRING>
範例:
nuget push MyPackage.5.0.2.nupkg -Source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json -ApiKey AZ
注意
Azure Artifacts 憑證提供者負責推送的真實認證,但 NuGet 仍然需要一個-ApiKey值才能接受該指令。 Azure Artifacts 忽略你提供的值,所以任何非空字串都適用。
發佈到其他組織的訂閱源
如果目標訂閱源屬於不同的 Azure DevOps 組織,請在該組織中建立 PAT,並將該訂閱源加入你的nuget.config檔案中。
在目標組織中建立 個人存取權杖(PAT),並將 封裝>讀取與寫入 設為其範圍。
執行以下指令將該資訊流加入來源。 這個指令會將你的 PAT 新增至
nuget.config,因此請妥善保存該檔案,並且不要將它提交到原始碼控制。nuget sources Add -Name <SOURCE_NAME> -Source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -UserName <USER_NAME> -Password <PERSONAL_ACCESS_TOKEN> -config <PATH_TO_NUGET_CONFIG_FILE>用你剛加入的來源名稱發佈套件。
nuget push <PACKAGE_PATH> -Source <SOURCE_NAME> -ApiKey <ANY_STRING>
範例:
nuget sources Add -Name "MySource" -Source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json -UserName MyUserName -Password YourPersonalAccessToken -config ./nuget.config
nuget push nupkgs/mypackage.1.1.8.nupkg -Source MySource -ApiKey AZ
注意
如果您的組織使用防火牆或代理伺服器,請允許使用 Azure Artifacts 網域的 URL 和 IP 位址。
Troubleshooting
驗證提示不出現
請確認 Azure Artifacts 憑證提供者已安裝,且使用 NuGet 版本4.8.0.5385或更新版本。 關於設定步驟,請參見「用 NuGet.exe連接Azure Artifacts串流」。
發佈失敗是因為該版本已經存在
Azure Artifacts 中的套件版本不可變更。 發佈版本後,即使刪除套件,也無法覆寫或重複使用相同的版本號。 更新套件版本,重建套件,然後再發佈。
透過防火牆或 Proxy 發佈時失敗
允許 Azure Artifacts 網域的 URL 和 IP 位址,然後重新嘗試發佈操作。
發佈失敗時出現 403 錯誤
這個錯誤通常代表你的帳號在動態消息上沒有發佈權限。 你至少需要 Feed Publisher(貢獻者)這個角色來推送套件。 請一位 Feed 擁有者更新你的角色,然後再試一次。