チュートリアル: 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 フィードからパッケージをアップロードまたは復元します。
次のステップ
次に試すその他のタスクを次に示します。
vcpkg
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示