Templates para GitHub Actions: Padronizando e Acelerando seus Fluxos de CI/CD

No mundo do desenvolvimento de software moderno, a automação é a espinha dorsal da produtividade. O GitHub Actions se consolidou como uma das ferramentas mais poderosas para implementar Integração Contínua (CI) e Entrega Contínua (CD) diretamente nos repositórios. No entanto, à medida que as organizações escalam, a duplicação de código nos arquivos YAML de workflow se torna um problema.
É nesse cenário que entram os Templates (Modelos) para GitHub Actions. Mais do que um simples recurso, eles representam uma mudança de mentalidade: de scripts repetidos para uma arquitetura de automação reutilizável e escalável.
Neste artigo, vamos explorar a definição técnica, os diferentes tipos de templates e as vantagens estratégicas de adotá-los em seus projetos.
O que são Templates para GitHub Actions?
Em essência, um template no contexto de GitHub Actions refere-se à capacidade de reutilizar blocos de lógica de automação sem precisar reescrever o código YAML em cada repositório. O GitHub oferece duas abordagens principais para criar esses modelos: Workflows Reutilizáveis e Ações Compostas (Composite Actions) .
1. Workflows Reutilizáveis (Reusable Workflows)
Um workflow reutilizável é um arquivo YAML padrão que vive em um repositório (geralmente um repositório central, como `org/github-actions` ou `.github`) e pode ser chamado por outros workflows em outros repositórios, desde que tenham permissão.
Definição: Ele é acionado pela palavra-chave `workflow_call` em vez de eventos como `push` ou `pull_request`. Ao ser chamado, você pode passar variáveis de entrada (`inputs`) e dados secretos (`secrets`).
2. Ações Compostas (Composite Actions)
Enquanto o Workflow Reutilizável substitui um pipeline inteiro, uma Ação Composta encapsula passos individuais (steps) dentro de uma única ação. É como criar uma função em uma linguagem de programação.
Definição: Definida por um arquivo `action.yml` que utiliza `runs.using: “composite”`. Ela permite combinar múltiplos comandos shell ou chamadas a outras ações em um único bloco reutilizável.
Como Funcionam na Prática?
Vamos imaginar um cenário comum: sua empresa possui 30 microserviços em Node.js. Todos eles precisam de um workflow para “Lint, Testar e Buildar” antes de um deploy.
Sem Templates: Você copia e cola o mesmo arquivo YAML de 50 linhas nos 30 repositórios. Se o time de DevOps precisar atualizar a versão do Node.js ou adicionar uma verificação de segurança, será necessário abrir 30 Pull Requests.
**Com Templates (Workflow Reutilizável):
**1. Você cria um repositório central chamado `company-actions`.
2. Dentro dele, cria o arquivo `.github/workflows/node-ci.yml` com o gatilho `on: workflow_call`.
3. Nos 30 microsserviços, o workflow local fica apenas com 10 linhas.
Exemplo do template (no repositório central):

Exemplo de chamada (no microserviço):

Com apenas esse bloco, o microsserviço executa toda a lógica central. Se a lógica mudar, ela muda em um único lugar.
As Principais Vantagens de Usar Templates
Adotar templates não é apenas uma questão estética de código, mas sim uma decisão arquitetural que traz benefícios tangíveis:
**1. Redução drástica da duplicação (DRY)
**O princípio “Don’t Repeat Yourself” (Não se repita) é levado ao extremo. A lógica de CI/CD deixa de ser copiada em dezenas de arquivos para ser referenciada. Isso diminui a carga cognitiva dos desenvolvedores, que não precisam mais vasculhar YAMLs gigantescos para entender o que o pipeline faz.
**2. Governança e Padronização Centralizada
**Para times de plataforma e DevOps, os templates são uma ferramenta de governança. Você pode garantir que todos os times estejam usando a mesma versão do compilador, as mesmas regras de segurança e os mesmos scripts de deploy. Se uma falha de segurança crítica for encontrada em uma dependência, a correção é feita no template central e se propaga automaticamente (após o trigger do workflow).
**3. Manutenção Simplificada
**Imagine atualizar 40 repositórios para usar a Action `checkout@v3` em vez da `v2`. Sem templates, isso é um trabalho manual massivo. Com templates, você altera uma linha no repositório central, e todos os consumidores recebem a atualização na próxima execução.
**4. Onboarding mais rápido
**Para um desenvolvedor novo no time, configurar um pipeline do zero pode ser intimidante. Com templates, a configuração se resume a preencher um formulário (inputs) ou adicionar um arquivo mínimo. O tempo para colocar um novo serviço em produção cai de horas para minutos.
**5. Segurança Reforçada
**Ao centralizar as ações, você pode evitar que desenvolvedores individuais adicionem ações de terceiros não aprovadas em seus pipelines. O time de segurança precisa revisar e aprovar apenas o repositório central de templates, em vez de auditar cada repositório da organização.
**6. Versionamento de Pipelines
**Assim como bibliotecas de código, os workflows reutilizáveis podem ser versionados usando branches ou tags (`@v1`, `@main`, `@feature`). Isso permite que você evolua seus templates com segurança, permitindo que times específicos migrem para a versão nova enquanto outros permanecem na antiga até estarem prontos.
Quando Usar Cada Abordagem?
A escolha entre “Workflows Reutilizáveis” e “Ações Compostas” depende do seu objetivo:
Use Workflows Reutilizáveis quando quiser padronizar um processo de ponta a ponta (ex: todo o fluxo de “Testar -> Buildar -> Publicar Imagem Docker”). Eles permitem definir `runs-on`, `services` e gerenciar jobs inteiros.
Use Ações Compostas quando quiser padronizar um conjunto específico de passos que se repetem dentro de jobs diferentes. Por exemplo, uma ação composta chamada “Instalar dependências e cachear” ou “Enviar notificação para o Slack”. Elas são mais granulares.
Na prática, as melhores arquiteturas costumam combinar os dois: Workflows Reutilizáveis orquestram o pipeline, que por sua vez chamam Ações Compostas para executar tarefas específicas.
Conclusão
Os templates para GitHub Actions representam o amadurecimento da cultura DevOps dentro do ecossistema GitHub. Eles transformam o CI/CD de uma coleção de scripts isolados em um produto de plataforma interna.
Se a sua organização está sofrendo com a “proliferação de YAML”, inconsistências entre pipelines ou lentidão para atualizar processos de build, investir tempo na criação de templates é um dos passos mais estratégicos que você pode dar. Ao fazer isso, você libera seus desenvolvedores para focarem no que realmente importa — o código da aplicação — enquanto garante que a base da automação permaneça sólida, segura e perfeitamente atualizada.
Veja outros temas da área em nosso canal do YouTube (link).
E participe também do nosso canal no Discord, com dicas e laboratórios (link do Discord).
Tem alguma dúvida ou sugestão? Mande para a gente pelo nosso e-mail: engenharia@tbxtech.com.
