GitHub 集成点

使用 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