👋 We've unified all of GitHub's product documentation in one place! Check out the content for REST API, GraphQL API, and Developers. Learn more on the GitHub blog.


Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais recentes, acesse a documentação em inglês. Se houver problemas com a tradução desta página, entre em contato conosco.

Persistir dados de fluxo de trabalho usando artefatos

Artefatos permitem que você compartilhe dados entre trabalhos em um fluxo e armazene dados quando o fluxo de trabalho estiver concluído.

GitHub Actions está disponível com GitHub Free, GitHub Pro, GitHub Free para organizações, GitHub Team, GitHub Enterprise Cloud e GitHub One. O GitHub Actions não está disponível para repositórios privados de contas que utilizam planos antigos por-repositório. Para obter mais informações, consulte os "produtos do GitHub".

Neste artigo

Sobre artefatos de fluxos de trabalho

Os artefatos permitem que você persista com os dados após um trabalho ter sido concluído e compartilhe os dados com outro trabalho no mesmo fluxo de trabalho. Um artefato é um arquivo ou uma coleção de arquivos produzidos durante a execução de um fluxo de trabalho. Por exemplo, você pode usar artefatos para salvar a sua criação e testar a saída após uma conclusão da execução do fluxo de trabalho. Para pushes e pull requestes, GitHub armazena artefatos por 90 dias. O período de retenção para um pull request é reiniciado cada vez que alguém faz o push de um novo commit para o pull request.

Esses são alguns dos artefatos comuns cujo upload você pode fazer:

  • Arquivos de log e descartes de memória;
  • Resultados de testes, falhas e capturas de tela;
  • Arquivos binários ou comprimidos
  • Resultados de teste de estresse e resultados de cobertura do código.

Armazenar artefatos consome espaço de armazenamento em GitHub. GitHub Actions usage is free for public repositories. For private repositories, each GitHub account receives a certain amount of free minutes and storage, depending on the product used with the account. Para mais informações, consulte "Gerenciando cobrança para GitHub Actions".

Faz-se o upload dos artefatos durante a execução de um fluxo de trabalho e você pode visualizar o nome e o tamanho do artefato na UI. Quando se faz o download de um artefato usando a UI GitHub, todos os arquivos cujo upload foi feito individualmente como parte do get do artefato zipado em um arquivo único. Isso significa que a cobrança é calculada com base no tamanho do artefato subido e não com base no tamanho do arquivo zip.

O GitHub fornece duas ações que você pode usar para fazer upload e baixar artefatos de compilação. Para obter mais informações, consulte ações/fazer upload de artefatos e ações/fazer download de artefatos.

Para os executores hospedados em GitHub, cada trabalho em um fluxo de trabalho é executado em uma nova instância de um ambiente virtual. Quando o trabalho é finalizado, o executor encerra e exclui a instância do ambiente virtual.

Para compartilhar dados entre trabalhos:

  • Fazendo o upload dos arquivos: Fornece ao arquivo subido um nome e faz o upload dos dados antes da conclusão do trabalho.
  • Fazendo o download dos arquivos: Você pode apenas fazer o download dos artefatos que foram subidos durante a mesma execução do fluxo de trabalho. Ao fazer o download de um arquivo, você pode fazer referenciá-lo pelo nome.

As etapas de um trabalho compartilham o mesmo ambiente na máquina executora, mas são executados em seus próprios processos individuais. Para transmitir dados entre etapas de um trabalho, você pode usar entradas e saídas. Para obter mais informações sobre entradas e saídas, consulte "Sintaxe de metadados para o GitHub Actions".

Transmitir dados entre trabalhos em um fluxo

Você pode usar as ações upload-artifact e download-artifact para compartilhar os dados entre os trabalhos em um fluxo de trabalho. Este exemplo de fluxo de trabalho ilustra como transmitir dados entre trabalhos em um mesmo fluxo. Para obter mais informações, consulte ações/fazer upload de artefatos e ações/fazer download de artefatos.

Os trabalhos que são dependentes de artefatos de um trabalho anterior devem aguardar a finalização do trabalho dependente. Esse fluxo de trabalho usa a palavra-chave needs para garantir que job_1, job_2 e job_3 sejam executados sequencialmente. Por exemplo, job_2 requer job_1 usando a sintaxe needs: job_1.

O Job 1 (Trabalho 1) executa estas etapas:

  • Realiza um cálculo de correspondência e salva o resultado em um arquivo de texto denominado math-homework.txt.
  • Usa a ação upload-artifact para fazer upload do arquivo math-homework.txt com o nome homework. A ação coloca o arquivo em um diretório denominado homework.

O Job 2 (Trabalho 2) usa o resultado do trabalho anterior:

  • Baixa o artefato homework carregado no trabalho anterior. Por padrão, a ação download-artifact baixa artefatos no diretório da área de trabalho no qual a etapa está sendo executada. Você pode usar o parâmetro da entrada do caminho para especificar um diretório diferente para o download.
  • Lê o valor no arquivo homework/math-homework.txt, efetua um cálculo matemático e salva o resultado em math-homework.txt.
  • Faz upload do arquivo math-homework.txt. Esse upload sobrescreve o upload anterior, pois ambos compartilham o mesmo nome.

O Job 3 (Trabalho 3) mostra o resultado carregado no trabalho anterior:

  • Baixa o artefato homework.
  • Imprime o resultado da operação matemática no log.

A operação matemática completa executada nesse fluxo de trabalho é (3 + 7) x 9 = 90.

name: Share data between jobs

on: [push]

jobs:
  job_1:
    name: Add 3 and 7
    runs-on: ubuntu-latest
    steps:
      - shell: bash
        run: |
          expr 3 + 7 > math-homework.txt
      - name: Upload math result for job 1
        uses: actions/upload-artifact@v1
        with:
          name: homework
          path: math-homework.txt

  job_2:
    name: Multiply by 9
    needs: job_1
    runs-on: windows-latest
    steps:
      - name: Download math result for job 1
        uses: actions/download-artifact@v1
        with:
          name: homework
      - shell: bash
        run: |
          value=`cat homework/math-homework.txt`
          expr $value \* 9 > homework/math-homework.txt
      - name: Upload math result for job 2
        uses: actions/upload-artifact@v1
        with:
          name: homework
          path: homework/math-homework.txt

  job_3:
    name: Display results
    needs: job_2
    runs-on: macOS-latest
    steps:
      - name: Download math result for job 2
        uses: actions/download-artifact@v1
        with:
          name: homework
      - name: Print the final result
        shell: bash
        run: |
          value=`cat homework/math-homework.txt`
          echo The result is $value

Fluxo de trabalho que transmite dados entre trabalhos para executar cálculos matemáticos

Compartilhar dados entre execuções de fluxo de trabalho

Após a conclusão do fluxo de trabalho, você pode fazer o download de um arquivo comprimido do artefato GitHub, encontrando a execução do fluxo de trabalho na subido na aba Ações. Você também pode usar o API REST GitHub para fazer o download dos artefatos. For more information, see "Artifacts."

Se você precisar acessar os artefatos a partir de uma execução anterior do fluxo de trabalho, você deverá armazenar os artefatos em algum lugar. Por exemplo, você poderia executar um script no fim de seu fluxo de trabalho para armazenar artefatos no Amazon S3 ou no Artifactory, e usar a API dos serviços de armazenamento para recuperar esses artefatos em um fluxo de trabalho futuro.

Fazer upload da compilação e testar artefatos

Você pode criar um fluxo de trabalho de integração contínua (CI) para criar e testar o seu código. Para obter mais informações sobre o uso do GitHub Actions para executar CI, consulte Sobre integração contínua.

A saída da compilação e teste de seu código muitas vezes produz arquivos que podem ser usados para depurar falhas em testes e códigos de produção que você pode implantar. É possível configurar um fluxo de trabalho para compilar e testar o código com push no repositório e relatar um status de sucesso ou falha. Você pode fazer upload da saída de compilação e teste para usar em implantações, para depurar falhas e testes com falhas e visualizar a cobertura do conjunto de teste.

Você pode usar a ação upload-artifact para fazer o upload dos artefatos. Para obter mais informações, consulte a ação ações/fazer upload-artefatos action.

Exemplo

Por exemplo, o seu repositório ou um aplicativo web pode conter arquivos SASS e TypeScript que você deve converter para CSS e JavaScript. Pressupondo que sua configuração de compilação envia os arquivos compilados para o diretório dist, você implementaria os arquivos no diretório dist no seu servidor de aplicativo web, se todos os testes foram concluídos com sucesso.

|-- hello-world (repository)
|   └── dist
|   └── tests
|   └── src
|       └── sass/app.scss
|       └── app.ts
|   └── output
|       └── test
|   

Esse exemplo mostra como criar um fluxo de trabalho para um projeto Node.js que builds (compila) o código no diretório src e executa os testes no diretório tests. Você pode partir do princípio que executar npm test produz um relatório de cobertura de código denominado code-coverage.html, armazenado no diretório output/test/.

O fluxo de trabalho faz upload dos artefatos de produção no diretório dist e no code-coverage.html como dois artefatos separados.

nome:  CI

em: [push]

trabalhos:
  build_and_test:
    runs-on: ubuntu-latest
    etapas:
      - nome: Verifica o repositório
        usa: actions/checkout@v2
      - nome: instalação, criação e teste de npm
        run: |
          instalação de npm
          criação de npm --if-present
          teste de npm
      - nome: Artefatos de produção do arquivo
        usa: actions/upload-artifact@v1
        com:
          nome: dist
          caminho: dist
      - nome: Resultados de cobertura do código do arquivo
        usa: actions/upload-artifact@v1
        com:
          nome: code-coverage-report
          caminho: output/test/code-coverage.html

Imagem de execução de fluxo de trabalho de artefato carregado em fluxo de trabalho

Fazer o download ou excluir artefatos

Você pode fazer o download dos artefatos que foram subidos durante um fluxo de trabalho. Os artefatos expiram automaticamente após 90 dias, mas você pode recuperar armazenamento utilizado GitHub Actions, excluindo os artefatos antes de expirarem em GitHub.

Aviso: Após a exclusão de um artefato, este não poderá ser restaurado.

  1. No GitHub, navegue até a página principal do repositório.
  2. Under your repository name, click Actions.
    Actions tab in the main repository navigation
  3. In the left sidebar, click the workflow you want to see.
    Workflow list in left sidebar
  4. Under "Workflow runs", click the name of the run you want to see.
    Name of workflow run
  5. Para baixar artefatos, use o menu suspenso Artifacts (Artefatos) e selecione o artefato que você pretende baixar.
    Menu suspenso do para fazer download do artefato
  6. Para excluir artefatos, use o menu suspenso Artefatos e clique em .
    Menu suspenso para excluir o artefato

Leia mais

Pergunte a uma pessoa

Não consegue encontrar o que procura?

Entrar em contato