使用 vcpkg 构建的二进制文件缓存到 GitHub Actions 工作流中
vcpkg 的二进制缓存功能减少了生成使用 GitHub Actions 进行持续集成的项目所需的时间。 有关详细信息,请阅读 二进制缓存功能文档。
GitHub Packages 的 NuGet 缓存提供程序
GitHub 包 允许存储库发布二进制项目以供公共或专用使用。 除了托管已发布包的存储之外,GitHub 包支持还提供一个 NuGet 注册表接口, nuget
vcpkg 可与二进制源提供程序一起使用作为二进制缓存。
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 获取对此功能的访问权限,并接收最新的 bug 修复。
- 依赖依赖项图的功能(如 Dependabot 警报和 Dependabot 拉取请求)尚不可用。 如果你对这些功能感兴趣,请告诉我们!
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