Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022
Azure Artifactsは、1 つのフィードからパッケージを格納および管理するのに役立ちます。 チーム内、組織全体、または既存のパブリック プロジェクトのパッケージをパブリックに共有できます。 この記事では、プロジェクトを設定し、NuGet.exeを使用してAzure Artifacts フィードに対して認証する方法について説明します。
前提 条件
| 製品 | 必要条件 |
|---|---|
| Azure DevOps | - Azure DevOps 組織。 - Azure DevOps プロジェクト。 - Azure Artifacts フィード。 - nuget.exe バージョン 4.8.0.5385 以降をダウンロードしてインストールします。 キャンセルとタイムアウトに関する重要なバグ修正を含む NuGet 5.5.x 以降をお勧めします。 |
Azure Artifacts資格情報プロバイダーを設定する
Azure Artifacts資格情報プロバイダーを使用すると、Azure Artifacts フィードへのセキュリティで保護された認証が可能になります。 nuget.exeで使用するには、まず NuGet のプラグイン検索パスに追加する必要があります。 詳細については、「 プラグインのインストールと検出」を参照してください。 プラグインが追加されたら、以下のオペレーティング システムのインストール手順に従います。
Azure Artifacts資格情報プロバイダーをインストールするには、次のいずれかの方法を使用します。
手動インストール
最新の Microsoft.NetFx48.NuGet.CredentialProvider.zip リリースをダウンロードします。
ZIP ファイルを抽出します。
抽出したアーカイブから
netfxに%UserProfile%/.nuget/plugins/フォルダーをコピーします。 nuget.exe の互換性のためには、netfxフォルダーが必要です。
ヘルパー スクリプトを使用してインストールする
または、ヘルパー スクリプトを使用してインストールを自動化することもできます。 PowerShell 5.1 以降があることを確認し、次のコマンドを実行します。
iex "& { $(irm https://aka.ms/install-artifacts-credprovider.ps1) } -AddNetfx"
詳細については、Azure Artifacts 資格情報プロバイダー リポジトリを参照してください。
プロジェクトのセットアップ
次の手順に従ってプロジェクトを設定し、パッケージを復元して発行する場所を NuGet が認識できるように、 nuget.config ファイルにフィードを追加します。 使用するフィード URL は、フィードのスコープがプロジェクトか組織かによって異なります。
Azure DevOps 組織にサインインし、プロジェクトに移動します。
[Artifacts] を選択し、ドロップダウン メニューからフィードを選択します。
[フィードに接続する] を選択してから、左側のナビゲーション ペインから NuGet.exe を選択します。
nuget.configまたは.csprojファイルと同じフォルダー内のプロジェクトに.slnファイルを追加し、指定したスニペットを貼り付けます。nuget.configファイルは、次のいずれかの例のようになります。プロジェクト スコープのフィード:
<?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>組織スコープのフィード:
<?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>
Azure DevOps コレクションにサインインし、プロジェクトに移動します。
[Artifacts] を選択し、ドロップダウン メニューからフィードを選択します。
[フィードに接続]
選択し、左側のナビゲーション ウィンドウから [ NuGet.exe ] を選択します。nuget.configまたは.csprojファイルと同じフォルダー内のprojectに.slnファイルを追加し、Project セットアップ セクションで指定したスニペットをファイルに貼り付けます。
注
Azure Artifacts資格情報プロバイダーには、NuGet バージョンの4.8.0.5385以降が必要です。 Azure Artifactsは、互換性と信頼性を最大限に高める NuGet 5.5.x 以降を推奨します。
レガシ プロジェクトのセットアップ
推奨される v3 フローをサポートしていない古いバージョンの NuGet を使用している場合でも、古い v2 エンドポイントと個人用アクセス トークン (PAT) を使用してフィードに接続できます。 この方法は、新しいクライアントに移行できない場合にのみ使用します。
Azure DevOps 組織にサインインし、プロジェクトに移動します。
[Artifacts] を選択し、ドロップダウン メニューからフィードを選択します。
[ フィードに接続] を選択し、左側から NuGet.exe を選択します。
[プロジェクトのセットアップ] セクションからソース URL をコピーし、
/v3/index.jsonを/v2に置き換えます。 更新されたソース URL は、次のいずれかのようになります。プロジェクト スコープのフィード:
https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v2組織スコープのフィード:
https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v2
個人用アクセス トークンを作成します。 アクセスしたい組織に対してトークンのスコープを設定し、必要に応じて、次のいずれかのスコープを選択します: パッケージ (読み取り)、パッケージ (読み取りと書き込み)、または パッケージ (読み取り、書き込み、管理)。
コマンド プロンプト ウィンドウで次のコマンドを実行して、フィード ソースを nuget.config ファイルに追加します。
nuget sources add -name <FEED_NAME> -source <SOURCE_URL> -username <ANY_STRING_BUT_NOT_NULL> -password <YOUR_PERSONAL_ACCESS_TOKEN>組織がMicrosoft Entra IDに接続されている場合は、最初にMicrosoft Entra資格情報で認証してから、
setapikeyコマンドを使用して個人用アクセス トークンを追加します。nuget sources add -name <FEED_NAME> -source <SOURCE_URL> -username <AZURE_ACTIVE_DIRECTORY_USERNAME> -password <AZURE_ACTIVE_DIRECTORY_PASSWORD> nuget setapikey <YOUR_PERSONAL_ACCESS_TOKEN> -source <SOURCE_URL>
サービス プリンシパルを使用して認証する
対話型サインインが適切でない自動化シナリオでは、サービス プリンシパル認証を使用します。 サービス プリンシパルを使用してAzure Artifacts フィードで認証するには、次の例に示すようにARTIFACTS_CREDENTIALPROVIDER_FEED_ENDPOINTS環境変数を設定します。
この変数は、フィード URL、サービス プリンシパル アプリケーション (クライアント) ID、証明書サブジェクト名または証明書ファイル パスを指定します。 必要な証明書の値は 1 つだけです。
$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>"
}
]
}
'@
関連コンテンツ
Azure Pipelines (YAML/クラシック) を使用して NuGet パッケージを発行する