NuGet.exe を使用してAzure Artifacts フィードに接続する

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資格情報プロバイダーをインストールするには、次のいずれかの方法を使用します。

手動インストール

  1. 最新の Microsoft.NetFx48.NuGet.CredentialProvider.zip リリースをダウンロードします。

  2. ZIP ファイルを抽出します。

  3. 抽出したアーカイブから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 は、フィードのスコープがプロジェクトか組織かによって異なります。

  1. Azure DevOps 組織にサインインし、プロジェクトに移動します。

  2. [Artifacts] を選択し、ドロップダウン メニューからフィードを選択します。

  3. [フィードに接続する] を選択してから、左側のナビゲーション ペインから NuGet.exe を選択します。

  4. 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>
      
  1. Azure DevOps コレクションにサインインし、プロジェクトに移動します。

  2. [Artifacts] を選択し、ドロップダウン メニューからフィードを選択します。

  3. [フィードに接続] 選択し、左側のナビゲーション ウィンドウから [NuGet.exe] を選択します。

  4. nuget.configまたは.csproj ファイルと同じフォルダー内のprojectに.sln ファイルを追加し、Project セットアップ セクションで指定したスニペットをファイルに貼り付けます。

Azure Artifacts資格情報プロバイダーには、NuGet バージョンの4.8.0.5385以降が必要です。 Azure Artifactsは、互換性と信頼性を最大限に高める NuGet 5.5.x 以降を推奨します。

レガシ プロジェクトのセットアップ

推奨される v3 フローをサポートしていない古いバージョンの NuGet を使用している場合でも、古い v2 エンドポイントと個人用アクセス トークン (PAT) を使用してフィードに接続できます。 この方法は、新しいクライアントに移行できない場合にのみ使用します。

  1. Azure DevOps 組織にサインインし、プロジェクトに移動します。

  2. [Artifacts] を選択し、ドロップダウン メニューからフィードを選択します。

  3. [ フィードに接続] を選択し、左側から NuGet.exe を選択します。

  4. [プロジェクトのセットアップ] セクションからソース 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
      
  5. 個人用アクセス トークンを作成します。 アクセスしたい組織に対してトークンのスコープを設定し、必要に応じて、次のいずれかのスコープを選択します: パッケージ (読み取り)パッケージ (読み取りと書き込み)、または パッケージ (読み取り、書き込み、管理)

  6. コマンド プロンプト ウィンドウで次のコマンドを実行して、フィード ソースを nuget.config ファイルに追加します。

    nuget sources add -name <FEED_NAME> -source <SOURCE_URL> -username <ANY_STRING_BUT_NOT_NULL> -password <YOUR_PERSONAL_ACCESS_TOKEN>
    
  7. 組織が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>"
        }
    ]
}
'@