fleet-bootstrap
/octopus:fleet-bootstrap propaga um padrão Octopus consistente para todos os
repos da sua frota em uma única execução — compondo o .octopus.yml de cada
repo a partir de um arquivo de controle central e delegando o seeding real ao
octopus setup.
O que resolve
Rodar octopus setup em seis terminais separadamente não escala, e uma frota
nunca é uniforme: um serviço .NET precisa de bundles diferentes de um frontend
React, e um repo legado não consegue absorver as mesmas guardrails de um
serviço greenfield desde o primeiro dia.
fleet-bootstrap lida com as duas dimensões. Ele lê um fleet.yml no repo
de workspace e compõe um manifesto por-repo a partir de três camadas —
um baseline agnóstico de stack, um perfil por stack, e um tier de adoção —
para que cada repo receba exatamente o padrão que consegue absorver agora,
com um caminho claro para aumentar o enforcement depois.
Como funciona
O comando é um orquestrador fino. O único arquivo que ele escreve diretamente
é o .octopus.yml; rules, hooks, agent config, .editorconfig e .husky
são gerados pelo octopus setup após o manifesto estar no lugar.
Para cada repo no fleet.yml:
- Resolve o perfil de stack — detectado automaticamente por sinais como
*.csproj,package.jsonoupyproject.toml, ou fixado explicitamente para monorepos e stacks ambíguos. - Seleciona o tier de adoção (T0 / T1 / T2), que controla quais camadas de
enforcement são ativadas:
- T0 — rules e agent config apenas; sem hooks, sem commit gates. Seguro em qualquer codebase legado imediatamente.
- T1 — adiciona hooks de loop e
.editorconfig. Captura drift novo sem bloquear commits existentes. - T2 — adiciona pre-commit hooks e o CI de quality workflow. Adequado só quando o codebase está limpo.
- Compõe o manifesto como
baseline ∪ perfil(s) ∪ tiere faz diff contra o.octopus.ymlatual do repo. - Mostra o preview (dry-run por padrão). Com
--apply, escreve e rodaoctopus setup.
O merge é por-chave e não-destrutivo: adições locais que correspondem ao perfil do repo são mantidas; chaves arbitrárias locais e qualquer de-escalação de tier são sinalizadas pro operador resolver, nunca removidas silenciosamente. Nada é sobrescrito sem um marcador explícito.
Uso & parâmetros
/octopus:fleet-bootstrap # dry-run: preview do diff por repo, não escreve nada/octopus:fleet-bootstrap --apply # escreve o .octopus.yml mesclado + roda `octopus setup`/octopus:fleet-bootstrap --apply --yes # batch confiável, pula confirmação por repo/octopus:fleet-bootstrap --apply --pr # abre branch + PR por repo (nunca faz push no main)/octopus:fleet-bootstrap --from-audit <report> # escopa para repos marcados pelo audit-fleet- (sem flags) — dry-run: preview do diff por repo, não escreve nada.
--apply— escreve o manifesto mesclado e rodaoctopus setupem cada repo.--yes— pula os prompts de confirmação por repo. Use em batch confiável junto com--apply.--pr— abre uma branch e PR por repo em vez de escrever direto. Nunca faz push para omain.--from-audit <report>— escopa a execução para repos marcados como drifted peloaudit-fleet. Usa o mesmo resolvedor de lista de repos.
Dupla
/octopus:fleet-bootstrap é a metade de remediação do loop detectar → remediar.
/octopus:audit-fleet é a metade de detecção — rode-o primeiro pra ver quais
repos drifted, depois passe --from-audit pra fazer o bootstrap só nesses.