Точки интеграции GitHub

Кэширование двоичных файлов, созданных с помощью vcpkg, для рабочих процессов GitHub Actions

Функция двоичного кэширования vcpkg сокращает время сборки проектов, использующих GitHub Actions для непрерывной интеграции. Дополнительные сведения см. в документации по функциям двоичного кэширования.

Поставщик кэша NuGet пакетов GitHub

Пакеты GitHub позволяют репозиториям публиковать двоичные артефакты для общедоступного или частного использования. Помимо хранения опубликованных пакетов, поддержка пакетов GitHub предоставляет интерфейс NuGet-реестра, который vcpkg может использовать как кэш для двоичных файлов с поставщиком двоичных источников.

Граф зависимостей GitHub

Замечание

В этом разделе рассматривается экспериментальная функция vcpkg, которая может изменяться или удаляться в любое время.

Подсказка

Мы активно развиваем эту функцию и хотели бы услышать ваши отзывы. Сообщите нам, есть ли у вас какие-либо мысли о текущей функциональности или любой требуемой функциональности по электронной почте vcpkg@microsoft.com или путем отправки проблемы в vcpkg. Если у вас есть отзывы по поводу любых функций GitHub, которые стали доступны благодаря этому, сообщите нам, и мы удостоверимся, что они попадут к подходящим специалистам в GitHub.

Сведения о графе зависимостей GitHub

Граф зависимостей GitHub хранит набор зависимостей для репозитория. Помимо возможности визуализации зависимостей репозитория, GitHub создает несколько полезных функций на основе этих данных, включая проверку зависимостей и оповещения Dependabot. Дополнительные сведения см. в документации GitHub по защите цепочки поставок.

Интеграция vcpkg с графом зависимостей GitHub

vcpkg поддерживает экспериментальную поддержку заполнения графа зависимостей GitHub из рабочего процесса GitHub Actions. Чтобы включить эту функцию, внесите следующие изменения в файл рабочего процесса:

  • VCPKG_FEATURE_FLAGS Задайте переменную среды, чтобы включить значениеdependencygraph.
  • Задайте для переменной GITHUB_TOKEN среды значение ${{ secrets.GITHUB_TOKEN }}.
  • Предоставьте GitHub Actions доступ на запись к содержимому репозитория, включив следующий блок разрешений. Это необходимо для записи метаданных графа зависимостей в репозиторий. Это не будет добавлять коммиты в репозиторий или вносить какие-либо другие изменения в его содержимое.
permissions:
  contents: write

Необходимо включить граф зависимостей GitHub в параметрах репозитория (включен по умолчанию для общедоступных репозиториев). Для частных репозиториев следуйте документации по GitHub, чтобы включить граф зависимостей для удовлетворения этого требования.

Известные ограничения

  • Версия vcpkg, связанная с GitHub Actions runners, может не быть актуальной. Используйте последнюю версию vcpkg, чтобы получить доступ к этой функции и получить последние исправления ошибок.
  • Функции, зависящие от графа зависимостей, такие как оповещения Dependabot и pull requests 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