@actions/download-artifact
Предупреждение
Actions/download-artifact@v3 прекратит поддержку 30 ноября 2024 г. Узнать больше. Аналогично, 30 июня 2024 года планируется прекратить поддержку версий 1 и 2. Обновите свой рабочий процесс, чтобы использовать версию 4 действий с артефактами. Это прекращение поддержки не повлияет на существующие версии GitHub Enterprise Server, используемые клиентами.
Загрузите артефакты действий из ваших запусков рабочего процесса. Внутренне поддерживается пакетом @actions/artifact.
См. также артефакт загрузки.
@actions/download-artifact
Важный
download-artifact@v4+ в настоящее время не поддерживается в GHES. Если вы используете GHES, вам необходимо использовать версию v3.
Выпуск upload-artifact@v4 и download-artifact@v4 представляет собой серьезные изменения в серверной архитектуре Artifacts. Они имеют многочисленные улучшения производительности и поведения.
Дополнительную информацию см. в документации @actions/artifact
.
action/upload-artifact@v3
и ниже, не поддерживается.Для получения помощи по критическим изменениям см. MIGRATION.md.
- uses : actions/download-artifact@v4
with :
# Name of the artifact to download.
# If unspecified, all artifacts for the run are downloaded.
# Optional.
name :
# Destination path. Supports basic tilde expansion.
# Optional. Default is $GITHUB_WORKSPACE
path :
# A glob pattern to the artifacts that should be downloaded.
# Ignored if name is specified.
# Optional.
pattern :
# When multiple artifacts are matched, this changes the behavior of the destination directories.
# If true, the downloaded artifacts will be in the same directory specified by path.
# If false, the downloaded artifacts will be extracted into individual named directories within the specified path.
# Optional. Default is 'false'
merge-multiple :
# The GitHub token used to authenticate with the GitHub API.
# This is required when downloading artifacts from a different repository or from a different workflow run.
# Optional. If unspecified, the action will download artifacts from the current repo and the current workflow run.
github-token :
# The repository owner and the repository name joined together by "/".
# If github-token is specified, this is the repository that artifacts will be downloaded from.
# Optional. Default is ${{ github.repository }}
repository :
# The id of the workflow run where the desired download artifact was uploaded from.
# If github-token is specified, this is the run that artifacts will be downloaded from.
# Optional. Default is ${{ github.run_id }}
run-id :
Имя | Описание | Пример |
---|---|---|
download-path | Абсолютный путь, по которому были загружены артефакты | /tmp/my/download/path |
Загрузите в текущий рабочий каталог ( $GITHUB_WORKSPACE
):
steps :
- uses : actions/download-artifact@v4
with :
name : my-artifact
- name : Display structure of downloaded files
run : ls -R
Загрузить в определенный каталог (также поддерживается расширение ~
):
steps :
- uses : actions/download-artifact@v4
with :
name : my-artifact
path : your/destination/dir
- name : Display structure of downloaded files
run : ls -R your/destination/dir
Если входной параметр 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
Загрузите все артефакты в текущий рабочий каталог:
steps :
- uses : actions/download-artifact@v4
- name : Display structure of downloaded files
run : ls -R
Загрузите все артефакты в определенный каталог:
steps :
- uses : actions/download-artifact@v4
with :
path : path/to/artifacts
- name : Display structure of downloaded files
run : ls -R path/to/artifacts
Чтобы загрузить их в один и тот же каталог:
steps :
- uses : actions/download-artifact@v4
with :
path : path/to/artifacts
merge-multiple : true
- name : Display structure of downloaded files
run : ls -R path/to/artifacts
Что приведет к:
path/to/artifacts/
... contents of Artifact-A
... contents of Artifact-B
В сценариях с несколькими Arch/OS артефакты могут быть созданы в разных заданиях. Чтобы загрузить все артефакты в один и тот же каталог (или соответствующий шаблону glob), вы можете использовать pattern
и merge-multiple
входных данных.
jobs :
upload :
strategy :
matrix :
runs-on : [ubuntu-latest, macos-latest, windows-latest]
runs-on : ${{ matrix.runs-on }}
steps :
- name : Create a File
run : echo "hello from ${{ matrix.runs-on }}" > file-${{ matrix.runs-on }}.txt
- name : Upload Artifact
uses : actions/upload-artifact@v4
with :
name : my-artifact-${{ matrix.runs-on }}
path : file-${{ matrix.runs-on }}.txt
download :
needs : upload
runs-on : ubuntu-latest
steps :
- name : Download All Artifacts
uses : actions/download-artifact@v4
with :
path : my-artifact
pattern : 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
вместе с другими идентификаторами репозитория и запуска:
steps :
- uses : actions/download-artifact@v4
with :
name : my-other-artifact
github-token : ${{ secrets.GH_PAT }} # token with actions:read permissions on target repo
repository : actions/toolkit
run-id : 1234
Права доступа к файлам не сохраняются во время загрузки артефакта. Во всех каталогах будет 755
, а во всех файлах — 644
. Например, если вы создадите исполняемый файл с помощью chmod
, а затем загрузите этот файл, после загрузки файл больше не будет гарантированно установлен как исполняемый файл.
Если вам необходимо сохранить разрешения, вы можете tar
все файлы вместе перед загрузкой артефакта. После загрузки файл tar
сохранит права доступа к файлу и учитывает регистр.
- name : ' Tar files '
run : tar -cvf my_files.tar /path/to/my/directory
- name : ' Upload Artifact '
uses : actions/upload-artifact@v4
with :
name : my-artifact
path : my_files.tar