runner wizard
Wizard interativo que gera .deploy.yml a partir do repo. Roda pre-flight, faz até 5 perguntas, termina com handoff explicativo.
Use quando: primeira vez registrando uma app, ou recriando manifest do zero com --force-overwrite. Para editar campo específico sem regenerar tudo, use `runner edit`.
Sintaxe
runner wizard [flags]Flags
| Flag | Default | Descrição |
|---|---|---|
--path <DIR> |
. (cwd) |
Local path ao repo já clonado |
--repo <user/repo> |
— | Clona GitHub repo pra temp e roda dali |
--branch <NAME> |
— | Branch (usado com --repo) |
--token <TOKEN> |
— | GitHub token (usado com --repo) |
--out <PATH> |
<repo>/.deploy.yml |
Onde escrever o manifest gerado |
--force-overwrite |
false |
Recria mesmo que .deploy.yml já exista |
--accept-defaults |
false |
Não-interativo, usa defaults pra tudo |
--from-compose |
false |
Gera manifest a partir de docker-compose.yml |
--resume |
false |
Retoma de .runner/wizard-answers.yml v2 |
--json |
false |
Saída estruturada em JSON (stdout) |
--dry-run |
false |
Não escreve nada, só renderiza |
Fluxo
Q0 — Source discovery
Resolução em ordem:
--path <DIR>→ usa direto--repo <user/repo>→ clona pra temp dir- cwd tem
.git→ usa cwd (silent skip) - Prompt interativo: local path ou GitHub repo
Para GitHub: token em 4 tiers — --token > $GITHUB_TOKEN > vault (runner tokens) > prompt interativo. Se a vault tem token de outro app no mesmo owner, oferece reuso.
Pre-flight gate
Antes de qualquer pergunta, verifica:
.deploy.ymljá existe sem--force-overwrite→ bail com hint prarunner edit.gitfaltando → bail com hint pragit init- Sem Dockerfile e sem docker-compose.yml → bail com template mínimo + link pros docs
Se passa, detecta sinais (compose multi-service, placeholders sem valor, outros apps no mesmo repo) que decidem quais Q3-Q5 disparam.
Q1-Q5 perguntas
| Q | Quando | Default |
|---|---|---|
| Q1: project | sempre | basename do dir, sanitizado |
| Q2: instance + domain | sempre | production + vazio |
| Q3: multi-service picker | compose com N>1 services | services com build pre-selected; managed assets (redis/mysql) NÃO pre-selected |
| Q4: placeholder values | compose tinha ${VAR} sem valor |
default do template ou vazio |
| Q5: ckey strategy | Q3 selecionou ≥2 services OU outro app já existe no mesmo repo | "uma ckey pra todos" |
Em qualquer prompt, digitar ? mostra explicação inline.
Handoff
No fim, imprime na stderr:
- ✓ Wizard concluído
- Generated: lista de arquivos com descrição
- Sua ckey: fingerprint + comando de backup
- Adicionar/alterar secret: CLI (
runner env set) ou web encoder - Próximo:
runner validate,runner deploy
Exemplos
# Greenfield: cd no repo com Dockerfile, rode sem nada
cd ~/projects/myapp
runner wizard
# Bootstrap a partir de GitHub remoto (private)
runner wizard --repo usuario/loja --branch main --token ghp_xxx
# Não-interativo (CI)
runner wizard --path . --accept-defaults
# Multi-service compose
runner wizard --from-compose --path ./monorepo
# Retomar wizard interrompido
runner wizard --resumeErros comuns
.deploy.yml já existe em ...→ userunner editou rode com--force-overwriteRepo em ... não tem .git→git init && git commit -m initialprimeiroNenhum Dockerfile ou docker-compose.yml encontrado→ crie um (template mostrado no erro)
Veja também
- `runner edit` — edita campo específico sem regenerar
- `runner add` — registra app (chama wizard internamente)
- Wizard state machine — como o wizard decide as perguntas
By Borlot.com.br on 29/05/2026