@actions/download-artifact
Avertissement
actions/download-artifact@v3 devrait devenir obsolète le 30 novembre 2024 . Apprendre encore plus. De même, la dépréciation des versions v1/v2 est prévue pour le 30 juin 2024 . Veuillez mettre à jour votre flux de travail pour utiliser la version 4 des actions d'artefact. Cette dépréciation n’aura aucun impact sur les versions existantes de GitHub Enterprise Server utilisées par les clients.
Téléchargez les artefacts d'actions à partir de vos exécutions de workflow. Propulsé en interne par le package @actions/artifact.
Voir aussi upload-artefact.
@actions/download-artifact
Important
download-artifact@v4+ n'est pas encore pris en charge sur GHES. Si vous êtes sur GHES, vous devez utiliser la v3.
La sortie de upload-artifact@v4 et download-artifact@v4 sont des changements majeurs dans l'architecture backend d'Artifacts. Ils présentent de nombreuses améliorations de performances et de comportement.
Pour plus d'informations, consultez la documentation @actions/artifact
.
action/upload-artifact@v3
et versions antérieures n'est pas pris en charge.Pour obtenir de l’aide sur les modifications avec rupture, consultez 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 :
Nom | Description | Exemple |
---|---|---|
download-path | Chemin absolu où les artefacts ont été téléchargés | /tmp/my/download/path |
Télécharger dans le répertoire de travail actuel ( $GITHUB_WORKSPACE
) :
steps :
- uses : actions/download-artifact@v4
with :
name : my-artifact
- name : Display structure of downloaded files
run : ls -R
Télécharger dans un répertoire spécifique (prend également en charge l'extension ~
) :
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
Si le paramètre d'entrée name
n'est pas fourni, tous les artefacts seront téléchargés. Pour différencier les artefacts téléchargés, par défaut, un répertoire désigné par le nom des artefacts sera créé pour chaque artefact individuel. Ce comportement peut être modifié avec le paramètre d'entrée merge-multiple
.
Exemple, s'il y a deux artefacts Artifact-A
et Artifact-B
et que le répertoire est etc/usr/artifacts/
, la structure du répertoire ressemblera à ceci :
etc/usr/artifacts/
Artifact-A/
... contents of Artifact-A
Artifact-B/
... contents of Artifact-B
Téléchargez tous les artefacts dans le répertoire de travail actuel :
steps :
- uses : actions/download-artifact@v4
- name : Display structure of downloaded files
run : ls -R
Téléchargez tous les artefacts dans un répertoire spécifique :
steps :
- uses : actions/download-artifact@v4
with :
path : path/to/artifacts
- name : Display structure of downloaded files
run : ls -R path/to/artifacts
Pour les télécharger dans le même répertoire :
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
Ce qui se traduira par :
path/to/artifacts/
... contents of Artifact-A
... contents of Artifact-B
Dans plusieurs scénarios arch/os, vous pouvez créer des artefacts dans différentes tâches. Pour télécharger tous les artefacts dans le même répertoire (ou correspondant à un modèle global), vous pouvez utiliser le pattern
et merge-multiple
entrées.
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
Cela donne un répertoire comme celui-ci :
my-artifact/
file-macos-latest.txt
file-ubuntu-latest.txt
file-windows-latest.txt
Il peut être utile de télécharger des artefacts à partir d'autres exécutions de workflow, ou même d'autres référentiels. Par défaut, les autorisations sont limitées afin qu'ils puissent uniquement télécharger des artefacts dans le cadre de l'exécution du flux de travail en cours. Pour élever les autorisations pour ce scénario, vous pouvez spécifier un github-token
ainsi qu'un autre référentiel et exécuter des identifiants :
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
Les autorisations de fichiers ne sont pas conservées pendant le téléchargement d'artefacts. Tous les répertoires en auront 755
et tous les fichiers en auront 644
. Par exemple, si vous créez un fichier exécutable à l'aide de chmod
, puis téléchargez ce fichier, il n'est plus garanti que le fichier soit défini comme exécutable après le téléchargement.
Si vous devez conserver les autorisations, vous pouvez tar
tous vos fichiers ensemble avant le téléchargement de l'artefact. Après le téléchargement, le fichier tar
conservera les autorisations de fichier et le respect de la casse.
- 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