{"meta":{"title":"Armazenar e compartilhar dados com artefatos de fluxo de trabalho","intro":"Use artefatos para compartilhar dados entre trabalhos em um fluxo e armazene dados quando o fluxo de trabalho estiver concluído.","product":"GitHub Actions","breadcrumbs":[{"href":"/pt/enterprise-server@3.20/actions","title":"GitHub Actions"},{"href":"/pt/enterprise-server@3.20/actions/tutorials","title":"Tutoriais"},{"href":"/pt/enterprise-server@3.20/actions/tutorials/store-and-share-data","title":"Armazenar e compartilhar dados"}],"documentType":"article"},"body":"# Armazenar e compartilhar dados com artefatos de fluxo de trabalho\n\nUse artefatos para compartilhar dados entre trabalhos em um fluxo e armazene dados quando o fluxo de trabalho estiver concluído.\n\n## Pré-requisitos\n\nAntes de realizar este tutorial, você precisa entender os artefatos do fluxo de trabalho. Confira [Artefatos do fluxo de trabalho](/pt/enterprise-server@3.20/actions/concepts/workflows-and-actions/workflow-artifacts).\n\n## Fazer upload da compilação e testar artefatos\n\nA 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. Você pode configurar um workflow para compilar e testar o código enviado para o seu repositório e informar 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.\n\nUse a ação `upload-artifact` para carregar artefatos. Ao fazer o upload de um artefato, você pode especificar um arquivo ou diretório único, ou vários arquivos ou diretórios. Você também pode excluir certos arquivos ou diretórios e usar padrões coringa. Recomendamos que você forneça um nome para um artefato, mas se nenhum nome for fornecido, `artifact` será usado como o nome padrão. Para obter mais informações sobre a sintaxe, consulte a ação a ação `actions/upload-artifact` em GitHub Enterprise Server.\n\n### Exemplo\n\nPor 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 a sua configuração de build gere os arquivos compilados no diretório `dist`, você implantará os arquivos no diretório `dist` no seu servidor de aplicativos Web se todos os testes forem concluídos com sucesso.\n\n```text\n|-- hello-world (repository)\n|   └── dist\n|   └── tests\n|   └── src\n|       └── sass/app.scss\n|       └── app.ts\n|   └── output\n|       └── test\n|\n```\n\nEste exemplo mostra como criar um fluxo de trabalho para um projeto do Node.js que compila o código no diretório `src` e executa os testes no diretório `tests`. Você pode pressupor que a execução `npm test` produza um relatório de cobertura de código chamado `code-coverage.html` armazenado no diretório `output/test/`.\n\nO fluxo de trabalho carrega os artefatos de produção no diretório `dist`, mas exclui os arquivos markdown. Ele também carrega o relatório `code-coverage.html` como outro artefato.\n\n```yaml copy\nname: Node CI\n\non: [push]\n\njobs:\n  build_and_test:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6\n      - name: npm install, build, and test\n        run: |\n          npm install\n          npm run build --if-present\n          npm test\n      - name: Archive production artifacts\n        uses: actions/upload-artifact@v3\n        with:\n          name: dist-without-markdown\n          path: |\n            dist\n            !dist/**/*.md\n      - name: Archive code coverage results\n        uses: actions/upload-artifact@v3\n        with:\n          name: code-coverage-report\n          path: output/test/code-coverage.html\n```\n\n## Configurar um período de retenção do artefato personalizado\n\nVocê pode definir um período de retenção personalizado para artefatos individuais criados por um fluxo de trabalho. Ao usar um fluxo de trabalho para criar um artefato, você pode usar `retention-days` com a ação `upload-artifact`. Este exemplo demonstra como definir um período de retenção personalizado de cinco dias para o artefato chamado `my-artifact`:\n\n```yaml copy\n  - name: 'Upload Artifact'\n    uses: actions/upload-artifact@v3\n    with:\n      name: my-artifact\n      path: my_file.txt\n      retention-days: 5\n```\n\nO valor `retention-days` não pode exceder o limite de retenção definido pelo repositório, pela organização ou pela empresa.\n\n## Fazer o download dos artefatos durante a execução de um fluxo de trabalho\n\nUse a ação [`actions/download-artifact`](https://github.com/actions/download-artifact) para baixar artefatos já carregados durante uma execução de fluxo de trabalho.\n\n> \\[!NOTE]\n> Você só pode baixar, em um fluxo de trabalho, os artefatos que foram carregados na mesma execução do fluxo de trabalho.\n\nEspecifique o nome de um artefato para fazer o download de um artefato individual. Se você carregar um artefato sem especificar um nome, o nome padrão será `artifact`.\n\n```yaml\n- name: Download a single artifact\n  uses: actions/download-artifact@v3\n  with:\n    name: my-artifact\n```\n\nVocê também pode baixar todos os artefatos em uma execução de fluxo de trabalho sem especificar um nome. Isso pode ser útil se você estiver trabalhando com muitos artefatos.\n\n```yaml\n- name: Download all workflow run artifacts\n  uses: actions/download-artifact@v3\n```\n\nSe você fizer o download de todos os artefatos da execução de um fluxo de trabalho, será criado um diretório para cada artefato usando seu nome.\n\nPara obter mais informações sobre a sintaxe, consulte a ação a ação `actions/download-artifact` em GitHub Enterprise Server.\n\n## Passando dados entre trabalhos em um fluxo de trabalho\n\nUse as ações `upload-artifact` e `download-artifact` para compartilhar dados entre 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 as ações `actions/upload-artifact` e as ações `download-artifact` em GitHub Enterprise Server.\n\nOs trabalhos que são dependentes de artefatos de um trabalho anterior devem aguardar a finalização bem-sucedida do trabalho anterior. 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` exige o `job_1` usando a sintaxe `needs: job_1`.\n\nO Job 1 (Trabalho 1) executa estas etapas:\n\n* Faz um cálculo matemático e salva o resultado em um arquivo de texto chamado `math-homework.txt`.\n* Usa a ação `upload-artifact` para carregar o `math-homework.txt` arquivo com o nome`homework` do artefato.\n\nO Job 2 (Trabalho 2) usa o resultado do trabalho anterior:\n\n* Faz o download do artefato `homework` enviado no trabalho anterior. Por padrão, a ação `download-artifact` baixa artefatos no diretório do workspace no qual a etapa está sendo executada. Use o parâmetro de entrada `path` para especificar outro diretório de download.\n* Lê o valor do arquivo `math-homework.txt`, faz um cálculo matemático e salva o resultado em `math-homework.txt` novamente, substituindo o conteúdo.\n* Carrega o arquivo `math-homework.txt`.\n  Esse carregamento substitui o artefato enviado anteriormente, pois ambos têm o mesmo nome.\n\nO Job 3 (Trabalho 3) mostra o resultado carregado no trabalho anterior:\n\n* Baixe o artefato `homework` Artefato.\n* Imprime o resultado da equação matemática no log.\n\nA operação matemática completa feita nesse exemplo de fluxo de trabalho é `(3 + 7) x 9 = 90`.\n\n```yaml copy\nname: Share data between jobs\n\non: [push]\n\njobs:\n  job_1:\n    name: Add 3 and 7\n    runs-on: ubuntu-latest\n    steps:\n      - shell: bash\n        run: |\n          expr 3 + 7 > math-homework.txt\n      - name: Upload math result for job 1\n        uses: actions/upload-artifact@v3\n        with:\n          name: homework\n          path: math-homework.txt\n\n  job_2:\n    name: Multiply by 9\n    needs: job_1\n    runs-on: windows-latest\n    steps:\n      - name: Download math result for job 1\n        uses: actions/download-artifact@v3\n        with:\n          name: homework\n      - shell: bash\n        run: |\n          value=`cat math-homework.txt`\n          expr $value \\* 9 > math-homework.txt\n      - name: Upload math result for job 2\n        uses: actions/upload-artifact@v3\n        with:\n          name: homework\n          path: math-homework.txt\n\n  job_3:\n    name: Display results\n    needs: job_2\n    runs-on: macOS-latest\n    steps:\n      - name: Download math result for job 2\n        uses: actions/download-artifact@v3\n        with:\n          name: homework\n      - name: Print the final result\n        shell: bash\n        run: |\n          value=`cat math-homework.txt`\n          echo The result is $value\n```\n\nA execução do fluxo de trabalho arquivará quaisquer artefatos gerados por ele. Para obter mais informações sobre como baixar os artefatos arquivados, confira [Baixar artefatos do fluxo de trabalho](/pt/enterprise-server@3.20/actions/how-tos/manage-workflow-runs/download-workflow-artifacts)."}