@actions/download-artifact
Предупреждение
Прекращение поддержки action/download-artifact@v3 запланировано на 30 ноября 2024 г. Узнать больше. Аналогичным образом, 30 июня 2024 года планируется прекратить поддержку версий 1 и 2. Обновите свой рабочий процесс, чтобы использовать версию 4 действий с артефактами. Это прекращение поддержки не повлияет на существующие версии GitHub Enterprise Server, используемые клиентами.
Загрузите артефакты действий из ваших запусков рабочего процесса. Внутренняя поддержка пакета @actions/artifact.
См. также артефакт загрузки.
@actions/download-artifact
Потеря разрешения
Скачать одиночный артефакт
Скачать все артефакты
Загрузите несколько (отфильтрованных) артефактов в один и тот же каталог.
Загрузка артефактов из других запусков рабочего процесса или репозиториев
Входы
Выходы
Улучшения
Критические изменения
v4 - Что нового
Использование
Примеры
Ограничения
Важный
download-artifact@v4+ в настоящее время не поддерживается в GHES. Если вы используете GHES, вам необходимо использовать версию v3.
Выпуск upload-artifact@v4 и download-artifact@v4 представляет собой серьезные изменения в серверной архитектуре Artifacts. Они имеют многочисленные улучшения производительности и поведения.
Дополнительную информацию см. в документации @actions/artifact
.
Загрузка происходит значительно быстрее: в худших сценариях улучшение достигает более 90%.
Артефакты можно загрузить из других запусков рабочих процессов и репозиториев, если они поставляются с PAT.
На самостоятельных серверах могут потребоваться дополнительные правила брандмауэра.
Загрузка артефактов, созданных из action/upload-artifact@v3
и ниже, не поддерживается.
Для получения помощи по критическим изменениям см. MIGRATION.md.
- использует: действия/download-artifact@v4 with:# Имя артефакта для загрузки.# Если не указано, загружаются все артефакты для запуска.# Необязательный.имя:# Путь назначения. Поддерживает базовое расширение тильды.# Необязательно. По умолчанию используется $GITHUB_WORKSPACEpath:# Шаблон шаблона для артефактов, которые следует загрузить.# Игнорируется, если указано имя.# Необязательный.шаблон:# При сопоставлении нескольких артефактов это меняет поведение целевых каталогов.# Если true, загруженные артефакты будут находиться в том же каталоге, который указан в параметре path.# Если значение равно false, загруженные артефакты будут извлечены в отдельные именованные каталоги по указанному пути.# Необязательно. По умолчанию установлено значение 'false'merge-multiple:# Токен GitHub, используемый для аутентификации с помощью GitHub API.# Это необходимо при загрузке артефактов из другого репозитория или при выполнении другого рабочего процесса.# Необязательно. Если не указано, действие будет загружать артефакты из текущего репозитория и текущего рабочего процесса. артефакты будут загружены из.# Необязательно. По умолчанию используется ${{ github.repository }}repository:# Идентификатор запуска рабочего процесса, из которого был загружен желаемый артефакт загрузки.# Если указан github-token, это запуск, из которого будут загружены артефакты.# Необязательно. По умолчанию используется ${{ github.run_id }}run-id:
Имя | Описание | Пример |
---|---|---|
download-path | Абсолютный путь, по которому были загружены артефакты | /tmp/my/download/path |
Загрузите в текущий рабочий каталог ( $GITHUB_WORKSPACE
):
шаги: - использует: действия/download-artifact@v4 with:name: my-artifact-name: Отобразить структуру загруженных файлов. запустить: ls -R
Загрузить в определенный каталог (также поддерживается расширение ~
):
шаги: - использует: действия/download-artifact@v4 with:name: my-artifactpath: your/destination/dir-name: Отобразить структуру загруженных файлов. запустить: ls -R ваш/назначение/каталог
Если входной параметр name
не указан, все артефакты будут загружены. Чтобы различать загруженные артефакты, по умолчанию для каждого отдельного артефакта будет создан каталог, обозначенный именем артефакта. Это поведение можно изменить с помощью входного параметра merge-multiple
.
Например, если есть два артефакта Artifact-A
и Artifact-B
, а каталог — etc/usr/artifacts/
, структура каталогов будет выглядеть следующим образом:
etc/usr/artifacts/ Artifact-A/ ... contents of Artifact-A Artifact-B/ ... contents of Artifact-B
Загрузите все артефакты в текущий рабочий каталог:
шаги: - использует: action/download-artifact@v4- name: Отображение структуры загруженных файлов. запустить: ls -R
Загрузите все артефакты в определенный каталог:
шаги: - использует: действия/download-artifact@v4 with:path: путь/к/артефактам-имя: Отображение структуры загруженных файлов. запустить: ls -R путь/к/артефактам
Чтобы загрузить их в один и тот же каталог:
шаги: - использует: действия/download-artifact@v4 with:path: путь/к/artifactsmerge-multiple: true-name: Отобразить структуру загруженных файлов. запустить: ls -R путь/к/артефактам
Что приведет к:
path/to/artifacts/ ... contents of Artifact-A ... contents of Artifact-B
В сценариях с несколькими Arch/OS артефакты могут быть созданы в разных заданиях. Чтобы загрузить все артефакты в один и тот же каталог (или соответствующий шаблону glob), вы можете использовать pattern
и merge-multiple
входных данных.
задания: загрузка:стратегия: матрица:работает: [ubuntu-latest, macos-latest, windows-latest]работает: ${{matrix.runs-on }}шаги: - name: Создать файл run: echo "hello from ${{matrix.runs-on }}" > file-${{matrix.runs-on }}.txt-name: Артефакт загрузки использует: action/upload-artifact @v4 с:имя: my-artifact-${{matrix.runs-on }}путь: файл-${{matrix.runs-on }}.txt скачать:необходимо: uploadruns-on: ubuntu-lateststeps: - имя: Загрузить все артефакты использует: action/download-artifact@v4 с:path: my-artifactpattern: my-artifact-*merge-multiple: true- run: ls -R my-artifact
В результате получается такой каталог:
my-artifact/ file-macos-latest.txt file-ubuntu-latest.txt file-windows-latest.txt
Может быть полезно загрузить артефакты из других запусков рабочего процесса или даже из других репозиториев. По умолчанию разрешения ограничены, поэтому они могут загружать артефакты только в рамках текущего выполнения рабочего процесса. Чтобы повысить разрешения для этого сценария, вы можете указать github-token
вместе с другими идентификаторами репозитория и запуска:
шаги: - использует: действия/download-artifact@v4 with:name: my-other-artifactgithub-token: ${{ secrets.GH_PAT }} # токен с действиями: разрешения на чтение в целевом репозитории: действия/toolkitrun-id: 1234
Права доступа к файлам не сохраняются во время загрузки артефакта. Во всех каталогах будет 755
, а во всех файлах — 644
. Например, если вы создаете исполняемый файл с помощью chmod
, а затем загружаете этот файл, после загрузки файл больше не будет гарантированно установлен как исполняемый файл.
Если вам необходимо сохранить разрешения, вы можете tar
все файлы вместе перед загрузкой артефакта. После загрузки файл tar
сохранит права доступа к файлу и учитывает регистр.
- имя: «Tar-файлы» запустить: tar -cvf my_files.tar /path/to/my/directory-name: 'Загрузить артефакт' использует: действия/upload-artifact@v4 с:имя: мой-артефактпуть: my_files.tar