@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.
- использует: 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
- имя: Артефакт загрузки использует: действия/upload-artifact@v4 с: имя: my-artifact-${{matrix.runs-on }} путь: file-${{matrix.runs-on }}.txt загрузка: необходимо: загрузить запуск: ubuntu-последние шаги:
- имя: Загрузить все артефакты использует: действия/download-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 }} # токен с действиями: разрешения на чтение в целевом репозитории: action/toolkit run-id: 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. смола