upload-artifact

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

actions/upload-artifact — это официальный шаг GitHub Actions, который позволяет сохранять файлы, созданные в ходе выполнения заданий workflow. Это могут быть отчёты о тестировании, артефакты сборки, данные покрытия, скриншоты и другие важные данные. Сохранённые таким образом файлы хранятся в управляемом GitHub хранилище, что позволяет последующим заданиям или ревьюерам легко получить доступ к ним. Этот шаг настраивается через параметры name, path (где path может быть указан как glob-список), retention-days и if-no-files-found. Соответствующий шаг actions/download-artifact позволяет извлекать загруженные артефакты в последующем задании, выполняющемся на другом runner'е, обеспечивая передачу артефактов сборки между заданиями. Артефакты ограничены одним запуском workflow и истекают по настроенному сроку хранения. Для долгосрочного хранения следует использовать реестр, активы релиза или внешний бакет. Вместе с кэшированием upload-artifact — стандартный способ сделать многозадачный CI/CD-пайплайн единым непрерывным процессом.

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

upload-artifact и download-artifact шаги позволяют персистировать файлы между заданиями внутри одного workflow (и после завершения — для скачивания через UI). Кеш (actions/cache) ускоряет повторную работу, сохраняя и восстанавливая директории по hash-ключу (hashFiles('package-lock.json')). Эффективность кеша особенно заметна при работе с большими деревьями зависимостей. Область действия кеша определяется веткой и ключом кеша; кеш главной ветки доступен для чтения в pull request'ах из форков.

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

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

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

В процессе использования upload-artifact могут возникнуть несколько типичных ошибок. Например, если ключ кеша никогда не меняется, то вы можете случайно кешировать старые данные, которые будут восстановлены каждый раз. Также кеш может превысить лимит размера в 10GB на репозиторий, что может привести к вытеснению старых записей, которые могут быть важны. Дефолтное хранение артефактов в 90 дней может привести к увеличению стоимости хранения данных, поэтому рекомендуется снижать этот срок для временных сборок.

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

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