Примеры работы с 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-cloud-runner
steps:
- run: echo "some data" > result.txt
- uses: actions/upload-artifact@v3
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-cloud-runner
steps:
- run: echo "some data" > result.txt
- uses: actions/upload-artifact@v3
with:
name: my-artifact
path: result.txt
test:
runs-on: ubuntu-cloud-runner
needs: build
steps:
- uses: actions/download-artifact@v3
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@v3
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-cloud-runner
steps:
- uses: cicd_tutorials/custom_uses_example@v0.0.1 # <username>/<repo-with-composite-action>@<tag>
- uses: actions/download-artifact@v3
with:
name: hello-artifact
- name: Показать содержимое hello.txt
run: cat hello.txt
Результат:
В этом примере:
- Подключаемый файл создает hello.txt с текстом
Hello world
и загружает его как артефакт. - Целевой рабочий процесс подключает yaml с данным composite action, скачивает артефакт через
download-artifact
и выводит содержимое файлаhello.txt
.