GitHub Actions: Fluxo e Persistência de Dados em Workflows
Quando se trata de Github Actions, os dados não são persistentes por natureza, nem ficam disponíveis para todo o pipeline. Cada etapa (step) tem seu próprio processo, cada trabalho (job) tem seu próprio executor (runner). Por padrão, quaisquer dados que surjam em um trabalho terminam com ele.
Então, como podemos passar dados de um processo para outro, ou salvar dados para uma execução futura?
A resposta rápida e certeira é essa:
Estratégia | Dados | Escopo | Persistência | Detalhes | Exemplo |
---|---|---|---|---|---|
env | Valores | Trabalho (interno) | Efêmero | Propaga dados entre etapas no mesmo trabalho | Passar um booleano para determinar se a próxima estapa deve ser executada |
outputs | Valores | Fluxo de trabalho (interno) | Efêmero | Propaga dados entre trabalhos/etapas no mesmo fluxo de trabalho | Passar um ID para o próximo trabalho |
artefatos | Arquivos | Fluxo de trabalho (interno e externo) | Persistente | Propaga arquivos entre trabalhos/fluxos de trabalho | Passar o build de um projeto para diferentes trabalhos de teste executados em paralelo Preferência a dados que mudam frequentemente. Os arquivos ficam disponíveis para download após o término do fluxo de trabalho. |
cache | Arquivos | Fluxo de trabalho (interno e externo) | Persistente | Propaga arquivos dentro e entre fluxos de trabalho no mesmo repositório | Armazenar pacotes npm em cache para uso em diferentes execuções de fluxo de trabalho. Destinado a arquivos que não mudam muito. |
Para uma resposta mais completa, continue lendo. Todos os exemplos de fluxo de trabalho neste artigo estão disponiveis em formato de arquivo aqui, junto com uma cópia dos respectivos logs editados (em inglês).