@actions/download-artifact
Предупреждение
Actions/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.
- использует: action/download-artifact@v4 с: # Имя артефакта для загрузки. # Если не указано, загружаются все артефакты для запуска. # Необязательный. name: # Путь назначения. Поддерживает базовое расширение тильды. # Необязательный. По умолчанию используется путь $GITHUB_WORKSPACE: # Шаблон для артефактов, которые необходимо загрузить. # Игнорируется, если указано имя. # Необязательный. шаблон: # Когда сопоставляются несколько артефактов, это меняет поведение целевых каталогов. # Если это правда, загруженные артефакты будут находиться в том же каталоге, указанном в пути. # Если установлено значение false, загруженные артефакты будут извлечены в отдельные именованные каталоги по указанному пути. # Необязательный. По умолчанию установлено значение «false», множественное слияние: # Токен GitHub, используемый для аутентификации с помощью API GitHub. # Это необходимо при загрузке артефактов из другого репозитория или из другого рабочего процесса. # Необязательный. Если не указано, действие будет загружать артефакты из текущего репозитория и текущего выполнения рабочего процесса. github-token: # Владелец репозитория и имя репозитория объединены знаком "/". # Если указан github-token, это репозиторий, из которого будут загружаться артефакты. # Необязательный. По умолчанию используется репозиторий ${{ github.repository }}: # Идентификатор запуска рабочего процесса, из которого был загружен нужный артефакт загрузки. # Если указан github-token, это запуск, из которого будут загружены артефакты. # Необязательный. По умолчанию используется ${{ github.run_id }} идентификатор запуска:
Имя | Описание | Пример |
---|---|---|
download-path | Абсолютный путь, по которому были загружены артефакты | /tmp/my/download/path |
Загрузите в текущий рабочий каталог ( $GITHUB_WORKSPACE
):
шаги: - использует: action/download-artifact@v4 с: name: my-artifact-name: Отобразить структуру загруженных файлов run: ls -R
Загрузить в определенный каталог (также поддерживается расширение ~
):
шаги: - использует: action/download-artifact@v4 с: 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
Загрузите все артефакты в текущий рабочий каталог:
шаги: - использует: действия/download-artifact@v4- имя: Отображение структуры загруженных файлов запуск: ls -R
Загрузите все артефакты в определенный каталог:
шаги: - использует: действия/download-artifact@v4 с: путь: путь/к/артефактам- имя: структура отображения загруженных файлов запуск: ls -R путь/к/артефактам
Чтобы загрузить их в один и тот же каталог:
шаги: - использует: action/download-artifact@v4 с: path: path/to/artifacts merge-multiple: true- name: Показать структуру загруженных файлов run: ls -R path/to/artifacts
Что приведет к:
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 - имя: Артефакт загрузки использует: action/upload-artifact@v4 с: name: my-artifact-${{matrix.runs-on }} путь: file-${{matrix.runs-on }}.txt download: необходимо: загрузить запуск: ubuntu-последние шаги: - имя: Загрузить все артефакты использует: действия/загрузка-artifact@v4 с: путь: шаблон моего-артефакта: мой-артефакт-* merge-multiple: true - запустить: ls -R мой-артефакт
В результате получается такой каталог:
my-artifact/ file-macos-latest.txt file-ubuntu-latest.txt file-windows-latest.txt
Может оказаться полезным загрузить артефакты из других рабочих процессов или даже из других репозиториев. По умолчанию разрешения ограничены, поэтому они могут загружать артефакты только в рамках текущего выполнения рабочего процесса. Чтобы повысить разрешения для этого сценария, вы можете указать github-token
вместе с другими идентификаторами репозитория и запуска:
шаги: - использует: действия/download-artifact@v4 с: name: my-other-artifact github-token: ${{ secrets.GH_PAT }} # токен с действиями: разрешения на чтение в целевом репозитории репо: действия/идентификатор запуска инструментария: 1234
Права доступа к файлам не сохраняются во время загрузки артефакта. Во всех каталогах будет 755
, а во всех файлах — 644
. Например, если вы создаете исполняемый файл с помощью chmod
, а затем загружаете этот файл, после загрузки файл больше не будет гарантированно установлен как исполняемый файл.
Если вам необходимо сохранить разрешения, вы можете tar
все файлы вместе перед загрузкой артефакта. После загрузки файл tar
сохранит права доступа к файлу и учитывает регистр.
- name: «Tar files» run: tar -cvf my_files.tar /path/to/my/directory- name: «Загрузить артефакт» использует: action/upload-artifact@v4 с: name: my-artifact path: my_files. смола