Артефакты и кэш

Тема дорожной карты · GitHub Actions

Артефакты и кеш — два взаимодополняющих механизма в GitHub Actions для сохранения данных между шагами и jobs в рамках CI/CD-пайплайна. Actions actions/upload-artifact и actions/download-artifact позволяют jobs обмениваться результатами сборки — скомпилированными бинарными файлами, отчётами о тестах или слоями Docker — загружая их в хранилище артефактов GitHub и скачивая в последующих jobs. Action actions/cache ускоряет workflow, сохраняя и восстанавливая каталоги зависимостей (например, node_modules или репозиторий Maven .m2) по cache-ключу, формируемому из хеша lockfile, чтобы повторные запуски пайплайна не тратили время на избыточные загрузки. Артефакты и кеш различаются жизненным циклом: артефакты хранятся в течение настраиваемого числа дней и доступны для ручного скачивания из интерфейса GitHub, тогда как записи кеша автоматически вытесняются через 7 дней неактивности или при превышении репозиторием квоты кеша. Понимание того, когда использовать артефакты, а когда кеш, необходимо для построения быстрых и надёжных workflow в GitHub Actions.

Как это работает

Артефакты и кэш: артефакты (actions/upload-artifact, download-artifact) персистят файлы между jobs внутри workflow (и после завершения — для скачивания через UI). Кеш (actions/cache) ускоряет повторную работу, сохраняя + восстанавливая директории по hash-ключу (hashFiles('package-lock.json')). Cache-hit драматичен для больших деревьев зависимостей. Scope кеша: ветка + ключ; кеш main-ветки расшарен на PR из форков read-only.

Когда применять

Кеш — для ~/.npm, ~/.pnpm-store, ~/.cargo, ~/.gradle, ~/.m2, Docker-слоёв через buildx cache, OS-пакетов. Артефакты — для передачи build-output между jobs (build → test → deploy с общим скомпилированным output). restore-keys: — fallback на cache-miss. Retention-политика — артефакты по дефолту 90 дней.

Типичные ошибки

Ловушки Артефакты и кэш: cache-key никогда не меняется (кешируете раз, всегда восстанавливаете тот же stale-кеш); кеш превышает 10GB/repo-лимит GitHub (старейшие entry вытесняются — иногда не те); дефолт retention артефактов 90 дней (стоимость storage растёт — снижайте для ephemeral-сборок).

Связанные понятия

Полезные ресурсы