@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
Perda de permissão
Baixar artefato único
Baixe todos os artefatos
Baixe vários artefatos (filtrados) para o mesmo diretório
Baixar artefatos de outras execuções de fluxo de trabalho ou repositórios
Entradas
Resultados
Melhorias
Quebrando mudanças
v4 - Novidades
Uso
Exemplos
Limitações
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
.
Os downloads são significativamente mais rápidos, com uma melhoria de mais de 90% nos piores cenários.
Os artefatos podem ser baixados de outras execuções de fluxo de trabalho e repositórios quando fornecidos com um PAT.
Em executores auto-hospedados, podem ser necessárias regras de firewall adicionais.
O download de artefatos que foram criados a partir de action/upload-artifact@v3
e abaixo não é suportado.
Para obter assistência com alterações significativas, consulte MIGRATION.md.
- usa: actions/download-artifact@v4 com: # Nome do artefato a ser baixado. # Se não for especificado, todos os artefatos da execução serão baixados. # Opcional. nome: # Caminho de destino. Suporta expansão básica de til. # Opcional. O padrão é o caminho $GITHUB_WORKSPACE: # Um padrão glob para os artefatos que devem ser baixados. # Ignorado se o nome for especificado. # Opcional. padrão: # Quando vários artefatos são correspondidos, isso altera o comportamento dos diretórios de destino. # Se verdadeiro, os artefatos baixados estarão no mesmo diretório especificado pelo caminho. # Se for falso, os artefatos baixados serão extraídos em diretórios nomeados individuais dentro do caminho especificado. # Opcional. O padrão é 'false' merge-multiple: # O token GitHub usado para autenticar com a API GitHub. # Isso é necessário ao fazer download de artefatos de um repositório diferente ou de uma execução de fluxo de trabalho diferente. # Opcional. Se não for especificado, a ação baixará artefatos do repositório atual e executará o fluxo de trabalho atual. github-token: # O proprietário do repositório e o nome do repositório unidos por "/". # Se github-token for especificado, este é o repositório do qual os artefatos serão baixados. # Opcional. O padrão é repositório ${{ github.repository }}: # O ID da execução do fluxo de trabalho de onde o artefato de download desejado foi carregado. # Se github-token for especificado, esta será a execução da qual os artefatos serão baixados. # Opcional. O padrão é ${{ github.run_id }} id de execução:
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
):
passos: - usa: actions/download-artifact@v4 com: name: my-artifact- name: Exibe a estrutura dos arquivos baixados run: ls -R
Baixe para um diretório específico (também suporta expansão ~
):
passos: - usa: actions/download-artifact@v4 com: nome: meu-artifact caminho: seu/destino/dir- nome: Exibe a estrutura dos arquivos baixados execute: ls -R seu/destino/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:
passos: - usa: actions/download-artifact@v4- name: Exibe a estrutura dos arquivos baixados execute: ls -R
Baixe todos os artefatos para um diretório específico:
passos: - usa: actions/download-artifact@v4 com: caminho: caminho/para/artefatos- nome: Estrutura de exibição dos arquivos baixados execução: ls -R caminho/para/artefatos
Para baixá-los para o mesmo diretório:
passos: - usa: actions/download-artifact@v4 com: path: path/to/artifacts merge-multiple: true- name: Exibe a estrutura dos arquivos baixados 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.
trabalhos: upload: estratégia: matriz: execução em: [ubuntu-latest, macos-latest, windows-latest] execução em: ${{ matriz.runs-on }} etapas: - nome: Crie um arquivo run: echo "hello from ${{ Matrix.runs-on }}" > file-${{ Matrix.runs-on }}.txt - nome: Carregar artefato usa: actions/upload-artifact@v4 com: nome: my-artifact-${{ matriz.runs-on }} caminho: arquivo-${{ matriz.runs-on }}.txt download: necessidades: upload é executado: etapas mais recentes do ubuntu: - nome: Baixar todos os artefatos usa: actions/download-artifact@v4 com: path: my-artifact pattern: my-artifact-* merge-multiple: true - execute: ls -R meu artefato
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:
passos: - usa: actions/download-artifact@v4 com: name: my-other-artifact github-token: ${{ secrets.GH_PAT }} # token com actions:read permissões no repositório do repositório de destino: 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.
- nome: 'Arquivos Tar' execute: tar -cvf meus_arquivos.tar /caminho/para/meu/diretório- nome: 'Carregar Artefato' usa: ações/upload-artifact@v4 com: nome: caminho do meu artefato: meus_arquivos. alcatrão