Pular para o conteúdo principal

Uma postagem marcadas com "pipeline"

Ver todos os Marcadores

GitHub Actions: Fluxo e Persistência de Dados em Workflows

· Leitura de 12 minutos
Manu Magalhães
Engenheira de DevSecOps

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égiaDadosEscopoPersistênciaDetalhesExemplo
envValoresTrabalho (interno)EfêmeroPropaga dados
entre etapas
no mesmo trabalho
Passar um booleano para determinar se a próxima estapa deve ser executada
outputsValoresFluxo de trabalho (interno)EfêmeroPropaga dados
entre trabalhos/etapas
no mesmo fluxo de trabalho
Passar um ID para o próximo trabalho
artefatosArquivosFluxo de trabalho (interno e externo)PersistentePropaga 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.
cacheArquivosFluxo de trabalho (interno e externo)PersistentePropaga 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).