Skip to main content
Skip to content

Кэширование зависимостей

Узнайте о кэшировании зависимостей для скорости и эффективности рабочего процесса.

Сведения о кэшировании зависимостей рабочего процесса

Рабочий процесс часто повторно использует одни и те же выходные данные или скачанные зависимости из одного запуска в другом. Например, средства управления пакетами и зависимостями, такие как Maven, Gradle, npm и Yarn, хранят локальный кэш скачанных зависимостей.

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

Примечание.

При использовании самостоятельно размещённых раннеров кэши из рабочих процессов хранятся в GitHubоблачном хранилище, принадлежащем -. Решение для хранения данных, принадлежащее клиенту, доступно только с GitHub Enterprise Server.

Артефакты и кэширование зависимостей

Артефакты и кэширование похожи, поскольку позволяют хранить файлы на GitHub, но каждая функция предлагает разные сценарии использования и не может использоваться взаимозаменяемо.

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

Дополнительные сведения о артефактах запуска рабочего процесса см. в разделе Хранение и предоставление общего доступа к данным с артефактами рабочего процесса.

Безопасность кэша

Кэши используются на основе ветви или тега, используемого в рабочем процессе, а не идентичности рабочего процесса или задачи. См. События, инициирующие рабочие процессы и GITHUB_REF раздел для ветки, используемой для различных триггеров рабочих процессов. Любой запуск, который может читать кэш, восстанавливает его содержимое as-is, поэтому воспринимайте восстановленные файлы как ненадёжные данные и никогда не храните секреты или другие конфиденциальные данные в кэше.

Ненадёжные рабочие процессы могут читать чувствительное содержимое кэша, например, когда pull_request форк восстанавливает кэш. Отравленные кэши могут привести к выполнению кода в доверенных рабочих процессах. Чтобы ограничить риск отравления кэшем, дает рабочим процессам, GitHub которые выполняются в ответ на низкое доверие, активирует доступ только для чтения к кэшам в области ветви по умолчанию. Рабочий процесс или задание может переопределить это ограничение только для чтения, явно объявив возможность cache-modeзаписи, которая повторно создает риск отравления кэшем для этого рабочего процесса.

Сведения о разбивке триггеров с низким уровнем доверия и по умолчанию о поведении кэша см. в разделе Справочник по кэшированию зависимостей. Рекомендации по безопасности для конкретного кэша см. в разделе Справочник по кэшированию зависимостей.

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

Сведения о реализации кэширования зависимостей в рабочих процессах см. в разделе Справочник по кэшированию зависимостей.