Примеры работы с actions/upload-artifact и actions/download-artifact
Основные возможности:
- Сохранение файлов и директорий как артефактов после выполнения шага.
- Передача артефактов между различными задачами в рамках одного рабочего процесса.
- Возможность скачивания артефактов из интерфейса CI/CD после завершения рабочего процесса.
- Файлы в составе артефактов CI/CD, созданные с помощью
actions/upload-artifact, хранятся на сервере и доступны для скачивания не более 30 суток. - Срок хранения можно настроить вручную, используйте параметр
retention-days
with:
retention-days: 7- Максимальный объем хранимых сборочных артефактов — 500 Мб (см. Лимиты в настройках учетной записи).
Создание и выгрузка артефакта в задаче (upload-artifact)
name: Пример использования upload-artifact для выгрузки артефакта
on:
workflow_dispatch: # Ручной запуск
push: # Запуск при push
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: echo "some data" > result.txt
- uses: actions/upload-artifact@v4
with:
name: my-artifact
path: result.txtРезультат:

В этом примере после выполнения шага:
- создается файл
result.txtс помощью командыecho; - этот файл сохраняется как артефакт с именем
my-artifactс помощью действияupload-artifact.
Передача артефакта между задачами (download-artifact и needs)
Для передачи файлов между задачами в одном рабочем процессе используйте связку actions/upload-artifact (для сохранения) и actions/download-artifact (для получения артефакта в другой задаче).
Пример:
name: Пример использования upload-artifact и download-artifact
on:
workflow_dispatch: # Ручной запуск
push: # Запуск при push
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: echo "some data" > result.txt
- uses: actions/upload-artifact@v4
with:
name: my-artifact
path: result.txt
test:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/download-artifact@v4
with:
name: my-artifact
- run: cat result.txtРезультат:

В этом примере:
- Задача
buildсоздает файлresult.txtи сохраняет его как артефакт с помощьюupload-artifact. - Задача
test(запускается послеbuildблагодаряneeds: build) скачивает артефакт с помощьюdownload-artifactи использует его в своих шагах.
- Для передачи артефакта между задачами обязательно используйте параметр
needs, чтобы обеспечить правильный порядок выполнения задач. - Путь к скачанному артефакту по умолчанию совпадает с именем файла или директории, указанным при загрузке.
Пример c composite, upload-artifact и download-artifact
upload-artifact может использоваться не только в обычных рабочих процессах, но и в составных рабочих процессах (composite actions). Это позволяет переиспользовать логику загрузки артефактов в разных проектах.
Подключаемый .yaml-файл
name: Базовый пример composite action с upload-artifact
runs:
using: "composite"
steps:
- name: Hello world
run: echo "Hello world" > hello.txt
- uses: actions/upload-artifact@v4
with:
name: hello-artifact
path: hello.txtПодключаемый yaml-файл должен:
- Находиться в корне репозитория.
- Называться actions.yaml.
Целевой yaml-файл
name: Использование composite action для артефакта и чтение результата
on:
workflow_dispatch: # Ручной запуск
push: # Запуск при push
jobs:
say-hello:
runs-on: ubuntu-latest
steps:
- uses: cicd_tutorials/custom_uses_example@v0.0.1 # <username>/<repo-with-composite-action>@<tag>
- uses: actions/download-artifact@v4
with:
name: hello-artifact
- name: Показать содержимое hello.txt
run: cat hello.txtРезультат:

В этом примере:
- Подключаемый файл создает hello.txt с текстом
Hello worldи загружает его как артефакт. - Целевой рабочий процесс подключает yaml с данным composite action, скачивает артефакт через
download-artifactи выводит содержимое файлаhello.txt.