Pular para conteúdo

Git - Controle de Versão no Lumina Flow Builder

Visão Geral

O Git Integration permite executar operações de controle de versão Git diretamente nos seus flows do Lumina. Ideal para automações que precisam gerenciar código, documentação ou qualquer conteúdo versionado.

Operações Disponíveis

Operações Básicas

  1. clone - Clonar repositório Git
  2. pull - Atualizar repositório local com mudanças remotas
  3. push - Enviar commits locais para repositório remoto
  4. fetch - Buscar atualizações do repositório remoto

Gerenciamento de Commits

  1. add - Adicionar arquivos à staging area
  2. commit - Criar commit com mudanças
  3. status - Ver status atual do repositório
  4. log - Visualizar histórico de commits

Tags e Configuração

  1. createTag - Criar tag no repositório
  2. pushTags - Enviar tags para repositório remoto
  3. addConfig - Adicionar configuração ao repositório
  4. userSetup - Configurar usuário Git (nome e email)

Quando usar Git Integration?

Use a integração Git quando precisar:

Automação de Deploy

  • Deploy automatizado: Clone, pull e deploy de aplicações
  • Versionamento: Criar tags de release automaticamente
  • Rollback: Reverter para versões anteriores

Gerenciamento de Conteúdo

  • Documentação: Atualizar docs automaticamente
  • Backup: Versionar configurações e dados
  • Sincronização: Manter múltiplos ambientes sincronizados

CI/CD

  • Pipeline: Integrar com processos de build
  • Testes: Buscar código para execução de testes
  • Release: Automatizar criação de releases

Colaboração

  • Notificações: Avisar equipe sobre commits
  • Revisão: Automatizar processo de code review
  • Métricas: Coletar dados sobre desenvolvimento

Casos de Uso Reais

1. Deploy Automatizado via WhatsApp

Usuário: /deploy producao
Sistema: Clonando repositório...
Sistema: Executando testes...
Sistema: Deploy realizado com sucesso!
Sistema: Tag v1.2.3 criada

2. Backup de Configurações

Sistema: Backup diário iniciado
Sistema: Arquivos adicionados ao Git
Sistema: Commit criado: "Backup 2025-10-13"
Sistema: Push realizado com sucesso

3. Sincronização de Documentação

Sistema: Verificando atualizações...
Sistema: Pull realizado - 3 arquivos atualizados
Sistema: Documentação sincronizada!

Requisitos

Git Instalado

  • Git deve estar instalado no servidor
  • Acesso ao comando git via linha de comando

Permissões

  • Acesso de leitura/escrita ao diretório do repositório
  • Credenciais configuradas (SSH keys ou HTTPS)

Configuração

  • Usuário Git configurado (nome e email)
  • Repositório remoto acessível

Segurança

Credenciais

  • Use SSH keys ao invés de senha
  • Nunca exponha tokens em variáveis públicas
  • Configure access tokens com permissões mínimas

Validação

  • Valide paths antes de executar operações
  • Sanitize mensagens de commit
  • Verifique permissões de arquivos

Estrutura do Node Git

Todos os nodes Git compartilham esta estrutura base:

{
  "id": "git_1",
  "type": "git",
  "position": { "x": 300, "y": 100 },
  "data": {
    "label": "Git Operation",
    "operation": "tipo_operacao",
    "repositoryPath": "/path/to/repo",
    "responseVariable": "git_result"
  }
}

Parâmetros Comuns

Campo Tipo Obrigatório Descrição
operation string Sim Tipo de operação Git (clone, pull, push, etc)
repositoryPath string Sim Caminho para o repositório local
responseVariable string Não Nome da variável para armazenar resposta

Fluxo Típico

START → GIT_CLONE → GIT_STATUS → GIT_ADD → GIT_COMMIT → GIT_PUSH → MESSAGE → END

Boas Práticas

✅ FAÇA

  1. Validação: Sempre verifique se o repositório existe
  2. Backup: Faça pull antes de push
  3. Mensagens: Use mensagens descritivas nos commits
  4. Variáveis: Armazene resultados em variáveis
  5. Tratamento: Use condition para tratar erros
  6. Status: Verifique status antes de commit

❌ NÃO FAÇA

  1. Credenciais: Não hardcode senhas ou tokens
  2. Force Push: Evite push forçado
  3. Root: Não use repositórios na raiz do sistema
  4. Commits vazios: Não faça commits sem mudanças
  5. Path absolutos: Não use paths hardcoded

Exemplo Completo: Sistema de Deploy

{
  "name": "Deploy Automatizado",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Ambiente",
        "parameters": {
          "message": "Digite o ambiente (dev/prod):",
          "variable": "ambiente"
        }
      }
    },
    {
      "id": "git_pull_1",
      "type": "git",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Atualizar Código",
        "operation": "pull",
        "repositoryPath": "/var/www/app",
        "responseVariable": "pull_result"
      }
    },
    {
      "id": "git_tag_1",
      "type": "git",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Criar Tag",
        "operation": "createTag",
        "repositoryPath": "/var/www/app",
        "tagName": "deploy-{{ambiente}}-{{timestamp}}",
        "tagMessage": "Deploy {{ambiente}} em {{date}}",
        "responseVariable": "tag_result"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Confirmação",
        "parameters": {
          "message": "Deploy {{ambiente}} realizado!\nTag: {{tag_result.tagName}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1100, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "git_pull_1" },
    { "source": "git_pull_1", "target": "git_tag_1" },
    { "source": "git_tag_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Troubleshooting

Erro: "Repository path is required"

  • Causa: Parâmetro repositoryPath não foi fornecido
  • Solução: Adicione o caminho do repositório

Erro: "Not a git repository"

  • Causa: Diretório não é um repositório Git
  • Solução: Execute clone primeiro ou inicialize o repositório

Erro: "Permission denied"

  • Causa: Sem permissão de acesso ao repositório
  • Solução: Configure SSH keys ou ajuste permissões

Erro: "Conflict detected"

  • Causa: Conflitos de merge
  • Solução: Resolva conflitos manualmente ou use pull com rebase

Integração com Outros Nodes

Com MESSAGE

Enviar notificações sobre operações Git

Com CONDITION

Verificar se operação foi bem-sucedida

Com VARIABLE

Armazenar resultados de operações

Com LOOP

Processar múltiplos repositórios

Com WEBHOOK

Receber eventos de GitHub/GitLab

Recursos Adicionais

Documentação Git

Tutoriais

  • Git básico
  • Workflows Git
  • Git para automação

Próximos Passos

Escolha a operação que deseja usar:

  1. Iniciante: Comece com status e log
  2. Clone: Veja clone para baixar repositórios
  3. Atualização: Use pull e push
  4. Commits: Aprenda add e commit
  5. Avançado: Explore createTag e userSetup

Arquivo: src/whatsapp-flows/node-executors/git.executor.ts

Implementação completa: Todas as 12 operações Git documentadas individualmente.