Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022
Azure Artifacts 讓開發人員能夠無縫地將套件發佈到摘要中,並根據摘要的可見性設定私下分享,或對於現有的公開專案公開分享。 本指南將指導你完成設置專案並使用 Azure Artifacts 源進行身份驗證。
先決條件
| 產品 | 需求 |
|---|---|
| Azure DevOps | - Azure DevOps 組織。 - Azure DevOps 項目。 - Azure Artifacts 資料饋送。 - 下載並安裝 |
設定 Azure Artifacts Credential Provider
要與你的動態進行驗證,你必須先安裝 Azure 憑證提供者。 使用 dotnet 附帶的工具安裝程式,你可以從 CLI 中用以下指令安裝憑證提供者:
dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool
如果你的儲存庫層級
dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool --source https://api.nuget.org/v3/index.json
您也可以將工具釘選至主版本(例如,在重現性很重要的容器映像中):
dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool --version 2.* --source https://api.nuget.org/v3/index.json
當你第一次執行需要驗證的操作時,應該透過以下其中一種方式進行驗證:
- 使用
--interactive執行,以便 dotnet 提示你進行驗證。 - 透過環境變數提供憑證(例如在無人值守的情境下)。
若有互動授權,請前往專案目錄並執行:
dotnet restore --interactive
這個指令會讓你登入並獲得一個代幣。 登入成功後,在權杖過期前,你都可以不需使用 --interactive 執行需要驗證的指令。 更多詳情請參見 Session token cache locations。
連接到訊息來源
選取 工件,然後從下拉菜單中選取您的供稿。
選取 [連線至饋送],然後從 [NuGet] 區段中選取 [dotnet]。
將 nuget.config 檔添加到專案中。 將其與 .csproj 或 .sln 檔放在同一資料夾中,然後將 Project setup (項目設置 ) 部分中提供的代碼片段粘貼到其中。 您的 nuget.config 檔應類似於以下內容:
專案範圍的動態消息:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <clear /> <add key="<FEED_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" /> </packageSources> </configuration>組織範圍的資訊流:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <clear /> <add key="<FEED_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" /> </packageSources> </configuration>
登入您的 Azure DevOps 集合,然後流覽至您的專案。
選取 構件,然後從下拉選單中選取您的資料流。
選擇 「連接到源」,然後從左側選擇「 dotnet 」。
將 nuget.config 檔添加到專案中。 將其與 .csproj 或 .sln 檔放在同一資料夾中,然後將 Project setup (項目設置 ) 部分中提供的代碼片段粘貼到其中。
使用服務主體進行驗證
可以使用服務主體對 Azure Artifacts 源進行身份驗證。 為此,請設置 ARTIFACTS_CREDENTIALPROVIDER_FEED_ENDPOINTS 環境變數,如下所示。
此變數應定義源 URL、服務主體的應用程式(用戶端)ID 以及證書使用者名稱或證書檔的路徑(只需要這兩者中的一個)。
$env:ARTIFACTS_CREDENTIALPROVIDER_FEED_ENDPOINTS = @'{
"endpointCredentials": [
{
"endpoint": "<FEED_URL>",
"clientId": "<SERVICE_PRINCIPAL_APPLICATION_(CLIENT)_ID>",
"clientCertificateSubjectName": "<SERVICE_PRINCIPAL_CERTIFICATE_NAME>",
"clientCertificateFilePath": "<SERVICE_PRINCIPAL_CERTIFICATE_PATH>"
}
]
}
'@