次の方法で共有


チュートリアル: 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 で取得した nuget.exeを使用します。 vcpkg fetch nuget コマンドは、vcpkg で取得したnuget.exeの場所を出力し、必要に応じて実行可能ファイルをダウンロードします。

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

.$(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 キーを設定し、 <apiKey> をフィードの API キーに置き換えます。

.$(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` 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 ファイルにdefaultPushSourceを設定する必要があります。既定のソースとして NuGet フィードの URL を使用してバイナリ パッケージをプッシュします。

パッケージを Azure Artifacts NuGet フィードにアップロードする場合は、nuget setApiKey AzureDevOps -Source <feed url> -ConfigFile <path to nuget.config>を実行してソースの API キーとしてAzureDevOpsを使用します。 それ以外の場合は、フィードの適切な API キーがある場合は、値を置き換えます。

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

次のコマンドを実行して、 nuget.config ファイルを使用して NuGet ソースを追加し、 <path to nuget.config>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 フィードからパッケージをアップロードまたは復元します。

次のステップ

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