Uday Docs

Uday Docs

Did You Know?

Docy turns out that context is a key part of learning.

Composite Actions vs Reusable Workflows

Estimated reading: 4 minutes 49 views

Composite Actions

Você já está utilizando composite actions para agrupar etapas como build, tag e push (CI), e login e sincronização com ArgoCD (CD). Essas ações compostas:

  • Seguem o princípio DRY (Don’t Repeat Yourself) e facilitam a manutenção de etapas comuns (zup.com.br, DEV Community).
  • São chamadas como um único step em um workflow e não expõem cada passo no log — eles aparecem como um bloco único (GitHub Docs, DEV Community).
  • Não permitem múltiplos jobs — são executadas dentro de um job existente (GitHub Docs, zup.com.br).

Reusable Workflows

Outra alternativa poderosa é usar workflows reutilizáveis, que permitem definir um fluxo completo com múltiplos jobs:

Melhores Práticas Recomendadas

1. Modularização com Propósito

  • Composite Actions são ideais para tarefas repetitivas e bem definidas, como build/push de Docker ou deploy com ArgoCD.
  • Use Reusable Workflows quando precisar orquestrar múltiplos jobs (por exemplo: build → testes → deploy).

2. Repositório Dedicado e Estrutura Recomendada

3. Versionamento

  • Use tags semânticas (semver): v1.0.0, v1.1.0, etc., para melhor rastreabilidade (incredibuild, Earthly).
  • Na chamada do workflow ou action, referencie a tag (ou SHA imutável) para evitar quebras não esperadas.

4. Inputs, Outputs e Parameterização

  • Defina parâmetros claros nos seus workflows (environment, app_name, etc.) e use outputs para compartilhar informações entre jobs (incredibuild, Earthly).
  • Isso facilita personalização e manutenção centralizada.

5. Logging e Debug

  • Prefira reusable workflows quando precisar de visibilidade detalhada sobre o que está acontecendo.
  • Em composite actions, inclua logs e mensagens significativas, especialmente em casos de erro.

6. Documentação

  • Documente cada action e workflow: o que faz, quais inputs requer, quais outputs produz, exemplos de uso (Earthly).
  • Isso facilita a adoção por outros times e a manutenção futura.

7. Centralização e Governança

  • Se você gerencia múltiplos projetos, considere montar uma organização ou repo centralizado (um “marketplace interno”) com guidelines, naming conventions, contribuições e revisões estruturadas (wellarchitected.github.com).
  • Nomeação padronizada ajuda na descoberta (ci-build, cd-deploy-argocd, etc.) (wellarchitected.github.com, The GitHub Blog).

8. Testes

  • Crie workflows de teste que acionem seus workflows reutilizáveis com diferentes inputs (usando strategy: matrix) para garantir estabilidade (Earthly).

Recomendação Aplicada ao seu Caso

ComponenteRecomendação
pasta tools/github-actions/servicesOK, mas se possível mova esse repositório para algo como platform-ci-cd-actions.
CI (composite action)Continue com ele, versionando e documentando bem.
CD (ArgoCD) compositeIdem; incluir logs claros de erro e sucesso.
cd-cd.yaml workflowConsidere transformá-lo em um reusable workflow com múltiplos jobs (build, deploy, testes automatizados).
Caller workflow na aplicação (.github/workflows)Continue simples: chame o workflow reutilizável com inputs/secrets.

Conclusão

Seu modelo atual — com CI e CD em composite actions — é funcional e modular. Para ir além:

  • Use reusable workflows quando quiser orquestrar múltiplos jobs ou precisar de logs mais ricos.
  • Mantenha actions e workflows em repositórios separados, com versionamento semântico e documentação clara.
  • Invista em centralização, governança e testes automatizados.

Leave a Comment

Share this Doc

Composite Actions vs Reusable Workflows

Or copy link

CONTENTS