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.
- O sistema recebe um diretório raiz como parâmetro
- Varre recursivamente todas as pastas em busca de arquivos
globalOps.json - Cada arquivo
globalOps.jsonrepresenta um projeto configurado
Para cada repositório encontrado:
- Executa
git pullpara obter as últimas alterações - Verifica se algum arquivo relevante foi modificado
- Se houver mudanças, dispara os comandos configurados
- Executa o comando definido em
command - Coleta os arquivos de saída especificados em
outputs - Cria uma release com os artefatos gerados
{
"tag": "0.5.6", // Versão atual do projeto
"command": "darwin run_blueprint", // Comando a ser executado
"outputs": [ // Arquivos/pastas de saída
"release/*"
]
}# 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}")Quando código é alterado no repositório:
- Sistema detecta mudança
- Executa
darwin run_blueprint - Coleta arquivos da pasta
release/* - Cria uma nova release no GitHub
Para múltiplos projetos:
- Monitora pasta com vários repositórios
- Cada um tem seu próprio
globalOps.json - Builds são executados independentemente
- Releases são criadas automaticamente
- ✅ 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