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


Двоичное кэширование

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

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

Таким образом, двоичное кэширование снижает влияние следующих недостатков здания из источника:

  • Повторяющиеся усилия. Сокращение количества операций сборки пакета из источника.
  • Длительное время сборки: восстановление двоичного пакета обычно является очень быстрой операцией, которая занимает несколько секунд.

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

Совет

Рекомендуется создать двоичный кэш с разрешениями на чтение и запись для каждого конвейера непрерывной интеграции или рабочего процесса. Отдельные разработчики должны иметь доступ только для чтения к двоичному кэшу, создаваемому CI.

Двоичные кэши могут размещаться в различных средах. Самая базовая форма двоичного кэша — это папка на локальном компьютере или сетевом файловом ресурсе. Кэши также могут храниться в любом веб-канале NuGet (например, в пакетах GitHub или артефактах Azure DevOps), Хранилище BLOB-объектов Azure, Google Cloud Storage и многих других службах.

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

Повторное использовать двоичный кэш для разработки

В то время как не рекомендуется в качестве механизма двоичного распределения, двоичное кэширование можно использовать для повторного использования выходных данных сборки из нескольких систем. Например, разработчики могут использовать двоичные пакеты, созданные CI на локальных компьютерах. Дополнительные методы для повторного использования и интеграции двоичных файлов vcpkg см. в vcpkg exportэтой строке.

Например, можно настроить веб-канал NuGet, размещенный в Azure Artifacts, для принятия двоичных пакетов, созданных из конвейера CI, и повторно использовать их в среде разработки.

Вам потребуется настроить веб-канал Azure Artifacts, чтобы предоставить разрешения на чтение и запись в конвейер Azure DevOps, а также предоставить разрешения только для чтения для узлов в команде разработки.

Двоичный кэш по умолчанию

Двоичное кэширование по умолчанию включено с поставщиком files в первом допустимом расположении:

  • Windows
  1. %VCPKG_DEFAULT_BINARY_CACHE%
  2. %LOCALAPPDATA%\vcpkg\archives
  3. %APPDATA%\vcpkg\archives
  • Не в Windows
  1. $VCPKG_DEFAULT_BINARY_CACHE
  2. $XDG_CACHE_HOME/vcpkg/archives
  3. $HOME/.cache/vcpkg/archives

С помощью vcpkg help binarycachingсредства доступна помощь с ограниченными возможностями.

Двоичное кэширование охватывает только двоичные файлы, которые вы создаете. Сведения о кэше исходных файлов и предварительно созданных средств см. в разделе "Кэширование активов".

Следующие шаги

Ознакомьтесь с руководствами, чтобы узнать, как настроить двоичный кэш и ссылку на синтаксис конфигурации: