@actions/download-artifact
Aviso
actions/download-artifact@v3 está agendado para descontinuação em 30 de novembro de 2024 . Saber mais. Da mesma forma, v1/v2 estão programados para descontinuação em 30 de junho de 2024 . Atualize seu fluxo de trabalho para usar a v4 das ações do artefato. Essa descontinuação não afetará nenhuma versão existente do GitHub Enterprise Server usada pelos clientes.
Baixe artefatos de ações de suas execuções de fluxo de trabalho. Alimentado internamente pelo pacote @actions/artifact.
Consulte também upload-artefato.
@actions/download-artifact
Importante
download-artifact@v4+ ainda não é compatível com GHES. Se você estiver no GHES, deverá usar a v3.
O lançamento de upload-artifact@v4 e download-artifact@v4 são mudanças importantes na arquitetura de back-end do Artifacts. Eles têm inúmeras melhorias de desempenho e comportamentais.
Para obter mais informações, consulte a documentação @actions/artifact
.
action/upload-artifact@v3
e abaixo não é suportado.Para obter assistência com alterações significativas, consulte 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 :
Nome | Descrição | Exemplo |
---|---|---|
download-path | Caminho absoluto onde os artefatos foram baixados | /tmp/my/download/path |
Baixe para o diretório de trabalho atual ( $GITHUB_WORKSPACE
):
steps :
- uses : actions/download-artifact@v4
with :
name : my-artifact
- name : Display structure of downloaded files
run : ls -R
Baixe para um diretório específico (também suporta expansão ~
):
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
Se o parâmetro de entrada name
não for fornecido, todos os artefatos serão baixados. Para diferenciar entre artefatos baixados, por padrão, um diretório indicado pelo nome dos artefatos será criado para cada artefato individual. Este comportamento pode ser alterado com o parâmetro de entrada merge-multiple
.
Exemplo, se houver dois artefatos Artifact-A
e Artifact-B
, e o diretório for etc/usr/artifacts/
, a estrutura do diretório será semelhante a esta:
etc/usr/artifacts/
Artifact-A/
... contents of Artifact-A
Artifact-B/
... contents of Artifact-B
Baixe todos os artefatos para o diretório de trabalho atual:
steps :
- uses : actions/download-artifact@v4
- name : Display structure of downloaded files
run : ls -R
Baixe todos os artefatos para um diretório específico:
steps :
- uses : actions/download-artifact@v4
with :
path : path/to/artifacts
- name : Display structure of downloaded files
run : ls -R path/to/artifacts
Para baixá-los para o mesmo diretório:
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
O que resultará em:
path/to/artifacts/
... contents of Artifact-A
... contents of Artifact-B
Em vários cenários de Arch/OS, você pode ter artefatos construídos em diferentes trabalhos. Para baixar todos os artefatos para o mesmo diretório (ou corresponder a um padrão glob), você pode usar o pattern
e merge-multiple
entradas.
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
Isso resulta em um diretório como este:
my-artifact/
file-macos-latest.txt
file-ubuntu-latest.txt
file-windows-latest.txt
Pode ser útil baixar artefatos de outras execuções de fluxo de trabalho ou até mesmo de outros repositórios. Por padrão, as permissões têm escopo definido para que só possam fazer download de artefatos na execução do fluxo de trabalho atual. Para elevar as permissões para este cenário, você pode especificar um github-token
junto com outro repositório e identificadores de execução:
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
As permissões de arquivo não são mantidas durante o upload do artefato. Todos os diretórios terão 755
e todos os arquivos terão 644
. Por exemplo, se você tornar um arquivo executável usando chmod
e, em seguida, fizer upload desse arquivo, após o download, não será mais garantido que o arquivo seja definido como executável.
Se você precisar preservar as permissões, poderá tar
todos os seus arquivos juntos antes do upload do artefato. Após o download, o arquivo tar
manterá as permissões do arquivo e a diferenciação de maiúsculas e minúsculas.
- 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