Pular para o conteúdo principal

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).

Como Gerar JSON Dinâmico no Terraform

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

Quem programa não se aguenta, né? Não pode ver uma coisinha declarativa que já quer fazer um loop, colocar uma lógica, faz qualquer coisa menos... declaração.

Aqui vou mostrar como gerar um JSON dinâmico no Terraform. Neste artigo vou usar Step Functions como exemplo, mas você pode usar o JSON que quiser.

O que vamos fazer

O JSON abaixo vai sofrer uma transformação. Vamos substituir os valores estáticos por:

  1. Uma variável
  2. Uma lista dinâmica
  3. Um ou mais objetos dinâmicos

Solução: Terraform não deixa ternários terem tipos diferentes

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

Você já encontrou esse erro no Terraform, quando o que você queria era exatamente ter tipos diferentes no resultado do ternário?

The true and false result expressions must have consistent types
Expressões com resultado true ou false devem ter tipos consistentes

Vou dar dois exemplos de como contornar esse problema, mas a regra geral é esta aqui:

atributo = [
<valor caso true>,
<valor caso false>
][<condicional> ? 0 : 1]

Como Migrar do CodeCommit para o GitHub — Mantendo sua pipeline Amplify

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

Este tutorial inclui orientações para três cenários de administração no GitHub:

  1. Quando o repo está na sua conta pessoal;
  2. Quando o repo está dentro de uma organização no GitHub e a galera da administração te dá as permissões necessárias; e
  3. Quando o repo está dentro de uma organização no GitHub e a galera da administração NÃO te dá as permissões necessárias.

Pré-requisitos: Acesso e permissões relevantes para CodeCommit e Amplify. Você também precisa de uma conta ativa no GitHub.