チュートリアル: GitHub Actions ワークフローで GitHub Packages を使用して vcpkg バイナリ キャッシュを設定する
Note
このチュートリアルでは、GitHub パッケージでホストされている NuGet フィードを使用しますが、他の NuGet フィード プロバイダー (Azure Artifacts など) でも同じ手順を最小限の変更で使用できます。
GitHub Packages には、vcpkg によって生成された NuGet バイナリ パッケージ用の便利なリポジトリが用意されています。 このチュートリアルでは、GitHub Packages をリモート ストレージとして使用する GitHub Actions ワークフローでバイナリ キャッシュを設定する方法について説明します。
このチュートリアルで学習する内容は次のとおりです。
前提条件
- コード エディター
- GitHub Actions を使用した GitHub リポジトリ
- vcpkg を使用するプロジェクト
1 - GitHub 個人用アクセス トークンを指定する
GitHub の指示に従って、リポジトリの従来の個人用アクセス トークン (PAT) を生成し、アクセス許可とpackages:read
アクセス許可をpackages:write
付与してください。
次に、リポジトリの GitHub Action のワークフローで使用可能なシークレットとして GitHub PAT を追加します。 このチュートリアルでは、シークレット GH_PACKAGES_TOKEN
の名前を .
提供される GITHUB_TOKEN
組み込みの PAT には packages:read
アクセス許可のみが付与されており、ワークフローに読み取り専用のバイナリ キャッシュを使用する場合に使用できます。
2 - Bootstrap vcpkg
vcpkg は、バイナリ キャッシュ操作中に使用する nuget.exe
実行可能ファイルの独自のコピーを取得します。 このチュートリアルでは、vcpkg-acquired nuget.exe
を使用します。
ワークフローで vcpkg をブートストラップするステップを追加します。
- name: Bootstrap vcpkg
shell: pwsh
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.bat
- name: Bootstrap vcpkg
shell: bash
run: ${{ github.workspace }}/vcpkg/bootstrap-vcpkg.sh
vcpkg ブートストラップ スクリプトの場所をワークフローに適した場所に置き換える必要がある場合があります。このチュートリアルでは、vcpkg がリポジトリのルート内 vcpkg
のフォルダーにあることを前提としています。
3 - 必要な環境変数を設定する
ワークフロー ファイルに次の環境変数を追加します (GitHub のユーザー名または組織の名前に置き換えます <OWNER>
)。
env:
USERNAME: <OWNER>
VCPKG_EXE: ${{ github.workspace }}/vcpkg/vcpkg
FEED_URL: https://nuget.pkg.github.com/<OWNER>/index.json
VCPKG_BINARY_SOURCES: "clear;nuget,https://nuget.pkg.github.com/<OWNER>/index.json,readwrite"
値をブートストラップ vcpkg VCPKG_EXE
ステップで生成された vcpkg 実行可能ファイルの場所に置き換える必要がある場合があります。
この手順では、GitHub Packages フィードをバイナリ キャッシュ ソースとして使用するように構成 VCPKG_BINARY_SOURCES
します。詳細については、 バイナリ キャッシュのリファレンスを参照 してください。
4 - GitHub パッケージを NuGet ソースとして追加する
このコマンドは vcpkg fetch nuget
vcpkg-acquired nuget.exe
の場所を出力し、必要に応じて実行可能ファイルをダウンロードします。
GitHub Actions ワークフロー ファイルに次の手順を追加します。
- name: Add NuGet sources
shell: pwsh
run: |
.$(${{ env.VCPKG_EXE }} fetch nuget) `
sources add `
-Source "${{ env.FEED_URL }}" `
-StorePasswordInClearText `
-Name GitHubPackages `
-UserName "${{ env.USERNAME }}" `
-Password "${{ secrets.GH_PACKAGES_TOKEN }}"
.$(${{ env.VCPKG_EXE }} fetch nuget) `
setapikey "${{ secrets.GH_PACKAGES_TOKEN }}" `
-Source "${{ env.FEED_URL }}"
Linux では、実行する必要 mono
があります nuget.exe
。 Ubuntu を使用する GitHub Actions ランナーには、プレインストールが付属 mono
しています。 それ以外の場合は、ディストリビューションのシステム パッケージ マネージャーを使用してインストール mono
できます。
- name: Add NuGet sources
shell: bash
env:
VCPKG_EXE: ${{ github.workspace }}/vcpkg/vcpkg
USERNAME: <OWNER>
FEED_URL: https://nuget.pkg.github.com/<OWNER>/index.json
run: |
mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \
sources add \
-Source "${{ env.FEED_URL }}" \
-StorePasswordInClearText \
-Name GitHubPackages \
-UserName "${{ env.USERNAME }}" \
-Password "${{ secrets.GH_PACKAGES_TOKEN }}"
mono `${{ env.VCPKG_EXE }} fetch nuget | tail -n 1` \
setapikey "${{ secrets.GH_PACKAGES_TOKEN }}" \
-Source "${{ env.FEED_URL }}"
GitHub 個人用アクセス トークンの提供手順で生成された PAT に指定した正しいシークレット名に置き換えるGH_PACKAGES_TOKEN
必要がある場合があります。
以上で作業は終了です。 vcpkg は、GitHub Acions ワークフロー内の GitHub Packages でホストされている NuGet フィードからパッケージをアップロードまたは復元します。
次のステップ
次に試すその他のタスクを次に示します。
vcpkg
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示