チュートリアル: NuGet フィードを使用して vcpkg バイナリ キャッシュを設定する

Note

このチュートリアルでは、Azure Artifacts でホストされている NuGet フィードを使用しますが、他の NuGet フィード プロバイダー (GitHub Packages など) にも同じ手順を使用できます。いくつかの変更が加えられます。

vcpkg では、NuGet パッケージ フィードを使用して、便利な方法でバイナリ パッケージをアップロードおよび復元できます。

NuGet パッケージ フィードにはアクセス制御機能があり、組織全体またはワークグループ全体のリソースへのアクセスを制限するのに最適です。 NuGet フィードは、Azure Artifacts や GitHub パッケージ レジストリなど、いくつかのクラウド ストレージ プロバイダーによってサポートされています

このチュートリアルで学習する内容は次のとおりです。

前提条件

  • ターミナル
  • vcpkg
  • NuGet パッケージ フィード、またはそうでない場合は、従う Azure DevOps アカウント
  • ターミナル
  • vcpkg
  • NuGet パッケージ フィード、またはそうでない場合は、従う Azure DevOps アカウント
  • monoシステムにインストールされているパッケージ

1 - NuGet フィードを設定する

既存の NuGet パッケージ フィードがある場合は、この手順をスキップします。

手順に 従って、Azure Artifacts NuGet フィードを設定します

任意の他の NuGet パッケージ フィード プロバイダーを使用することもできます。

2 - NuGet ソースを追加する

Note

Linux では、実行nuget.exeする必要monoがあります。 ディストリビューションのシステム パッケージ マネージャーを使用してインストール mono できます。

vcpkg は、バイナリ キャッシュ操作中に使用する nuget.exe 実行可能ファイルの独自のコピーを取得します。 このチュートリアルでは、vcpkg-acquired nuget.exeを使用します。 このコマンドは vcpkg fetch nuget vcpkg-acquired nuget.exeの場所を出力し、必要に応じて実行可能ファイルをダウンロードします。

次のコマンドを実行して、ソースとして NuGet フィードを追加し、任意の名前に置き換え、<feed url>NuGet フィードの URL に置き換えます<feed name>

.$(vcpkg fetch nuget) sources add -Name <feed name> -Source <feed url>

次のコマンドを実行して、NuGet 実行可能ファイルへのパスをフェッチします。

vcpkg fetch nuget

これにより、次のような C:\path\to\nuget.exe出力が提供されます。 このパスを書き留めます。 前の手順で取得したパスを使用して、次のコマンドを実行します。

C:\path\to\nuget.exe sources add -Name <feed name> -Source <feed url>
mono `vcpkg fetch nuget | tail -n 1` sources add -Name <feed name> - Source <feed url>

API キーを指定する

一部のプロバイダーでは、API キーを使用して NuGet パッケージをフィードにプッシュする必要があります。 たとえば、GitHub パッケージでは、API キーとして GitHub PAT (個人用アクセス トークン) が必要です。Azure Artifacts を使用している場合は、代わりに API キーが使用されます AzureDevOps

次のコマンドを使用して、NuGet フィードにプッシュされるすべてのパッケージの API キーを設定し、フィードの API キーに置き換えます <apiKey>

.$(vcpkg fetch nuget) setapikey <apikey> -Source <feed url>

次のコマンドを実行して、NuGet 実行可能ファイルへのパスをフェッチします。

vcpkg fetch nuget

これにより、次のような C:\path\to\nuget.exe出力が提供されます。 このパスを書き留めます。 前の手順で取得したパスを使用して、次のコマンドを実行します。

C:\path\to\nuget.exe setapikey <apikey> -Source <feed url>
mono `vcpkg fetch nuget | tail -n 1` sources setapikey <apiKey> - Source <feed url>

認証資格情報を指定する

NuGet フィードでは、パッケージをダウンロードしてアップロードできるようにするために認証が必要になる場合があります。 その場合は、コマンドにパラメーターとして追加することで資格情報を nuget sources add 指定できます。

次に例を示します。

nuget sources add -Name my-packages -Source https://my.nuget.feed/vcpkg-cache/index.json -UserName myusername -Password mypassword -StorePasswordInClearText

Azure Artifacts などの一部のプロバイダーでは、さまざまな認証方法が必要になる場合があります。詳細については、 プライベート NuGet フィード に対する認証に関する記事を参照してください。

ファイルを使用するnuget.config

または、次のテンプレートに nuget.config 従って、ファイルを使用して NuGet ソースを構成することもできます。

nuget.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="defaultPushSource" value="<feed url>" />
  </config>
  <apiKeys>
    <add key="<feed url>" value="<apikey>" />
  </apiKeys>
  <packageSources>
    <clear />
    <add  key="<feed name>" value="<feed url>" />
  </packageSources>
  <packageSourcesCredentials>
    <<feed name>>
      <add key="Username" value="<username>" />
      <add key="Password" value="<password>" />
    </<feed name>>
  </packageSourcesCredentials>
</configuration>

nuget.config ファイルの例:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="defaultPushSource" value="https://contoso.org/packages/" />
  </config>
  <apiKeys>
    <add key="https://contoso.org/packages/" value="encrypted_api_key" />
  </apiKeys>
  <packageSources>
    <clear />
    <add key="Contoso" value="https://contoso.org/packages/" />
  </packageSources>
  <packageSourcesCredentials>
    <Contoso>
      <add key="Username" value="user" />
      <add key="Password" value="..." />
    </Contoso>
  </packageSourcesCredentials>
</configuration>

vcpkg では、ファイルに nuget.config a をdefaultPushSource設定する必要があります。バイナリ パッケージをプッシュするには、既定のソースとして NuGet フィードの URL を使用します。

パッケージを Azure Artifacts NuGet フィードにアップロードする場合は、ソースの API キーとして使用 AzureDevOps します。 それ以外の場合は、フィードの適切な API キーがある場合は、値を置き換えます。

ソースを <clear /> 追加して、以前に構成した他の値を無視します。 必要に応じて、このファイルに複数のソースを定義し、ソースごとに 1 つのエントリを <add key="<feed name>" value="<feed url>" /> 使用できます。

次のコマンドを実行して、ファイルを使用して NuGet ソースをnuget.config追加し、ファイルへのパスにnuget.config置き換えます<path to nuget.config>

.$(vcpkg fetch nuget) sources add -ConfigFile <path to nuget.config>

次のコマンドを実行して、NuGet 実行可能ファイルへのパスをフェッチします。

vcpkg fetch nuget

これにより、次のような C:\path\to\nuget.exe出力が提供されます。 このパスを書き留めます。 前の手順で取得したパスを使用して、次のコマンドを実行します。

C:\path\to\nuget.exe sources add -ConfigFile <path to nuget.config>
mono `vcpkg fetch nuget | tail -n 1` sources add -ConfigFile <path to nuget.config>

3 - NuGet フィードを使用するように vcpkg を構成する

環境変数を VCPKG_BINARY_SOURCES 次のように設定します。

$env:VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"

ファイルを使用 nuget.config している場合は、代わりに次の操作を行います。

$env:VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"
set VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"

ファイルを使用 nuget.config している場合は、代わりに次の操作を行います。

set VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"

Note

コマンドを使用してexport設定VCPKG_BINARY_SOURCESすると、現在のシェル セッションにのみ影響します。 この変更をセッション間で永続的にするには、シェルのプロファイル スクリプト (例: ~/.bashrc~/.zshrcまたは) にコマンドを追加exportする必要があります。

export VCPKG_BINARY_SOURCES="clear;nuget,<feed url>,readwrite"

ファイルを使用 nuget.config している場合は、代わりに次の操作を行います。

export VCPKG_BINARY_SOURCES="clear;nugetconfig,<path to nuget.config>"

以上で作業は終了です。 vcpkg は NuGet フィードからパッケージをアップロードまたは復元します。

次のステップ

次に試すその他のタスクを次に示します。