Skip to content

Latest commit

 

History

History
91 lines (70 loc) · 2.85 KB

File metadata and controls

91 lines (70 loc) · 2.85 KB

GlobalOps - Plano de Implementação

Visão Geral

O GlobalOps é uma ferramenta de automação que monitora repositórios Git em busca de mudanças e executa comandos automaticamente quando arquivos específicos são alterados.

Como Funciona

1. Descoberta de Repositórios

  • O sistema recebe um diretório raiz como parâmetro
  • Varre recursivamente todas as pastas em busca de arquivos globalOps.json
  • Cada arquivo globalOps.json representa um projeto configurado

2. Monitoramento de Mudanças

Para cada repositório encontrado:

  • Executa git pull para obter as últimas alterações
  • Verifica se algum arquivo relevante foi modificado
  • Se houver mudanças, dispara os comandos configurados

3. Execução Automatizada

  • Executa o comando definido em command
  • Coleta os arquivos de saída especificados em outputs
  • Cria uma release com os artefatos gerados

Estrutura do Arquivo globalOps.json

{
    "tag": "0.5.6",           // Versão atual do projeto
    "command": "darwin run_blueprint",  // Comando a ser executado
    "outputs": [              // Arquivos/pastas de saída
        "release/*"
    ]
}

Fluxo de Execução (Pseudocódigo)

# 1. Recebe o diretório base
pasta_base = argv[0]

# 2. Descobre todos os projetos configurados
repositorios = []
for pasta in listar_pastas_recursivamente(pasta_base):
    if arquivo_existe(pasta + "/globalOps.json"):
        repositorios.append(pasta)

# 3. Processa cada repositório
for repositorio in repositorios:
    # Carrega configuração
    config = carregar_json(repositorio + "/globalOps.json")
    
    # Atualiza código
    git_pull(repositorio)
    
    # Verifica mudanças
    if arquivo_mudou_desde_ultima_execucao(repositorio):
        print(f"Mudanças detectadas em {repositorio}")
        
        # Executa comando configurado
        resultado = executar_comando(config["command"], repositorio)
        
        if resultado.sucesso:
            # Cria release com os outputs
            criar_release(config["tag"], config["outputs"], repositorio)
            print(f"Release {config['tag']} criada para {repositorio}")

Casos de Uso

Exemplo 1: Build Automático

Quando código é alterado no repositório:

  1. Sistema detecta mudança
  2. Executa darwin run_blueprint
  3. Coleta arquivos da pasta release/*
  4. Cria uma nova release no GitHub

Exemplo 2: Deploy Contínuo

Para múltiplos projetos:

  1. Monitora pasta com vários repositórios
  2. Cada um tem seu próprio globalOps.json
  3. Builds são executados independentemente
  4. Releases são criadas automaticamente

Benefícios

  • Automação Completa: Zero intervenção manual
  • Multi-Projeto: Gerencia vários repositórios simultaneamente
  • Configurável: Cada projeto define seus próprios comandos
  • Rastreável: Histórico de releases e mudanças