チュートリアル: 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 フィードからパッケージをアップロードまたは復元します。
次のステップ
次に試すその他のタスクを次に示します。
vcpkg