Прочитать на английском

Поделиться через


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

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

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

Поставщик кэша GitHub Actions

Примечание

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

Кэш GitHub Actions предназначен для хранения промежуточных файлов сборки репозитория, которые часто не изменяются между заданиями или рабочими процессами. Для пользователей GitHub кэш GitHub Actions является естественным для двоичного кэширования vcpkg, и проще настроить, чем интеграция двоичного кэширования пакета GitHub vcpkg. GitHub предоставляет несколько различных средств для управления кэшами действий, включая REST API и расширение средства командной gh строки, чтобы оптимизировать кэши для рабочего процесса. Интеграция vcpkg с кэшем GitHub Actions осуществляется через поставщика двоичных x-gha источников.

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

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

Граф зависимостей 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 и запросов на вытягивание 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