GitHub Actions ワークフロー用の vcpkg ビルド バイナリのキャッシュ
vcpkg のバイナリ キャッシュ機能により、GitHub Actions を使用して継続的インテグレーションを行うプロジェクトのビルドにかかる時間が短縮されます。 詳細については、 バイナリ キャッシュ機能のドキュメントを参照してください。
GitHub Packages NuGet キャッシュ プロバイダー
GitHub パッケージ を使用すると、リポジトリはパブリックまたはプライベートで使用するためにバイナリ成果物を発行できます。 発行されたパッケージのストレージをホストするだけでなく、GitHub Packages のサポートでは、vcpkg がバイナリ キャッシュとして使用できる NuGet レジストリ インターフェイスと、 nuget
バイナリ ソース プロバイダーが提供されます。
GitHub 依存関係グラフ
注
このセクションでは、いつでも変更または削除できる vcpkg の試験的な機能について説明します。
ヒント
この機能は積極的に開発されており、フィードバックをお聞かせください。 vcpkg@microsoft.comを電子メールで送信するか、vcpkg で問題を報告することで、現在の機能や必要な機能に関するご意見がある場合は、お知らせください。 これが可能な GitHub 機能に関するフィードバックがある場合は、それをお知らせください。GitHub で適切なユーザーに確実にアクセスできるようにします。
GitHub 依存関係グラフについて
GitHub 依存関係グラフには、リポジトリの依存関係のセットが格納されます。 GitHub では、リポジトリの依存関係を視覚化できるだけでなく、依存関係の確認や Dependabot アラートなど、このデータの上にいくつかの便利な機能を構築しています。 詳細については、 サプライ チェーンのセキュリティ保護に関する GitHub のドキュメントを参照してください。
vcpkg と GitHub 依存関係グラフの統合
vcpkg には、GitHub Actions ワークフロー内から GitHub 依存関係グラフを設定するための試験的なサポートがあります。 この機能を有効にするには、ワークフロー ファイルで次の変更を行います。
-
VCPKG_FEATURE_FLAGS
値を含むようにdependencygraph
環境変数を設定します。 -
GITHUB_TOKEN
環境変数を${{ secrets.GITHUB_TOKEN }}
値に設定します。 - 次のアクセス許可ブロックを含めることで、GitHub Actions にリポジトリの内容への書き込みアクセス権を付与します。 これは、依存関係グラフのメタデータをリポジトリに書き込む場合に必要です。 これにより、リポジトリにコミットが追加されたり、リポジトリの内容に他の変更が加えたりすることはありません。
permissions:
contents: write
リポジトリの設定で GitHub 依存関係グラフを有効にする必要があります (パブリック リポジトリでは既定で有効になっています)。 プライベート リポジトリの場合は、GitHub のドキュメントに従って、この要件を満たすために 依存関係グラフを有効にします 。
既知の制限事項
- GitHub Actions ランナーにバンドルされている vcpkg のバージョンが最新ではない可能性があります。 vcpkg の最新バージョンを使用して、この機能にアクセスし、最新のバグ修正プログラムを受け取ります。
- 依存関係グラフに依存する機能 (Dependabot アラートや Dependabot pull request など) はまだ使用できません。 これらの機能に興味がある場合は、お知らせください!
GitHub Actions ワークフローの例
注
この例では、いくつかの依存ポートを一覧表示する有効な vcpkg.json
マニフェストがあることを前提としています。 マニフェストの詳細については、マニフェスト モードに関するドキュメントを参照してください。
name: Populate dependencies
on:
push:
branches: [ main ]
workflow_dispatch:
permissions:
contents: write
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VCPKG_FEATURE_FLAGS: dependencygraph
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
# This will execute a dry-run, meaning that libraries will not be built and
# installed, but they will still be reported to the GitHub dependency graph.
# This step assumes `vcpkg` has been bootstrapped (run `./vcpkg/bootstrap-vcpkg`)
- name: Run vcpkg
run: ${{ github.workspace }}/vcpkg/vcpkg install --dry-run
vcpkg