Como gerenciar artefatos nos workflows do Github Actions

Neste artigo você vai ver:

Neste artigo vamos nos aprofundar em como usar artefatos nos workflows do Github Actions.

Vamos começar explicando esse conceito de artefatos. Em seguida, vamos ver como usá-los dentro dos nossos workflows no GitHub Actions. Finalmente, mostraremos uma aplicação prática.

Afinal, o que são artefatos?

Um artefato é um arquivo, ou uma coleção de arquivos, produzidos durante a execução de um fluxo de trabalho (workflow).

No contexto do Github Actions, os artefatos permitem que você mantenha os dados após a conclusão de um job e compartilhe esses dados com outro job no mesmo workflow.

Por exemplo, você pode usar artefatos para salvar o build do seu programa, ou um arquivo de output de testes, após o término da execução do workflow (ou job) relacionado.

Seguem alguns exemplos de artefatos comuns que você pode fazer upload:

  • Arquivos de logs.
  • Arquivos binários ou compactados.
  • Resultados de testes.
  • Resultados de cobertura de código.

Nota: Por padrão, o GitHub armazena logs e artefatos de compilação por 90 dias, e esse período de retenção pode ser personalizado.

Como usar artefatos em um workflow

O GitHub fornece duas ações que você pode usar para fazer upload e download de artefatos de compilação:

É preciso usar ambas para compartilhar dados entre jobs.

Em primeiro lugar, fazendo upload de arquivos

  • Informando o nome do arquivo enviado.
  • Informando o path a partir do qual o artefato vai ser criado (pode ser para uma pasta ou um arquivo específico).
- uses: actions/upload-artifact@v2
  with:
    name: my-artifact
    path: path/to/artifact/world.txt

Em segundo lugar, fazendo download de arquivos

Informando o nome do artefato que foi carregado no mesmo workflow (geralmente num job anterior).

 - uses: actions/download-artifact@v2
   with:
     name: my-artifact 

Nota: Ao fazer download de um arquivo, você pode referenciá-lo pelo nome no job.

Existem outros inputs que podem ser usados com essas actions, por exemplo:

  • É possível passar uma lista de paths na action de upload.
  • É possível informar um path específico na action de donwload.

Recomendo ler as documentações de cada uma para entender tudo que elas oferecem.

Exemplo prático de como usar artefatos com Github Actions

Aqui, vou mostrar como usar artefatos com Github Actions através de um exemplo simples de adição e multiplicação usando 3 jobs.

Esses jobs terão dependência uns com os outros, ou seja, teremos algo assim no nosso workflow: SOMA → MULTIPLICAÇÃO → RESULTADO

O que significa que o job MULTIPLICAÇÃO aguardará o job SOMA finalizar com sucesso para iniciar, idem para o job RESULTADO que aguardará o job MULTIPLICAÇÃO finalizar com sucesso para iniciar.

  1. workflow inicial
  1. Na aba Actions (conforme imagem abaixo)
Reprodução (print) da interface gráfica do Github em um repositório de POC onde mostra os registros de execução do workflow de artefatos.

  1. O resultado: workflow run
Reprodução (print) da interface gráfica do Github em um repositório de POC onde mostra a estrutura do workflow anterior no Github Actions.
Reprodução (print) da interface gráfica do Github em um repositório de POC onde mostra o resultado do job Add 3 and 7 executado no workflow anterior no Github Actions.
Reprodução (print) da interface gráfica do Github em um repositório de POC onde mostra o resultado do job Multiply by 9 executado no workflow anterior no Github Actions.
Reprodução (print) da interface gráfica do Github em um repositório de POC onde mostra o resultado do job Display Results executado no workflow anterior no Github Actions.

Como podem observar, eu usei várias vezes as actions de upload e download de artefatos.

No primeiro job: Usei a action de UPLOAD para compartilhar o arquivo TXT com o resultado da soma de 3+7.

Já no segundo job: Usei a action de DOWNLOAD para buscar o arquivo TXT com o resultado da soma, extrai o valor do arquivo, e multipliquei o resultado por 10, antes de usar a action de UPLOAD para compartilhar o resultado da multiplicação.

No terceiro job: Usei a action de DOWNLOAD para buscar o arquivo TXT com o resultado da multiplicação, e mostrar o resultado final: 90.

Inclusive, na página de sumário da execução, podemos observar que o artefato Homework está armazenado e pode ser baixado localmente para conferir seu conteúdo (dentro dos 90 dias que comentei mais cedo). Isso poderia ser usado para criar os reviewers testar o código gerado por uma pull request (PR), por exemplo, baixando apenas um executável localmente através desse link.

Hoje, é frequente usar workflows semelhantes para CI/CD, por exemplo, para gerar binários de softwares para cada sistema operacional (Ubuntu, macOS e Windows), antes de compartilhá-los com outros jobs, que gerarão os pacotes usando esses binários após ter baixados eles como artefatos, e eventualmente distribuir eles no Cloud num job de publicação.

Artefatos com workflows no Github Actions: facilitam o gerenciamento do seus arquivos

Por hoje é isso galera! Espero que este artigo tenha esclarecido como usar artefatos no Github Actions com seus workflows.

Lembrando também que essas actions precisam ser usadas em conjuntas no mesmo workflow.

Caso você desejar compartilhar arquivos com outros repositórios, existem outras actions para isso, por exemplo, essa que eu criei de copy-push-files, compatível com os diversos runners disponíveis no Github Actions (Ubuntu, macOS e Windows).

– – – – –

Quem quiser consultar outros exemplos com Github Actions, deixo aqui um repositório pessoal onde testei vários tipos de implementações com a ferramenta.

Lembrando que a documentação do Github Actions em português é muito boa e vale a leitura.

Referências

Capa do artigo sobre artefatos nos workflows do Github Actions onde vemos as mãos de uma desenvolvedora de back-end trabalhando no laptop com uma agenda física aberta do lado.
foto Guillaume Falourd
Back-end Developer
Zupper tentando transformar o complexo em simples através de conteúdos diversificados, com intuito de impactar o mercado de TI e as pessoas ao seu redor da melhor forma possível.

Este site utiliza cookies para proporcionar uma experiência de navegação melhor. Consulte nossa Política de Privacidade.