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:

  1. --path <DIR> → usa direto
  2. --repo <user/repo> → clona pra temp dir
  3. cwd tem .git → usa cwd (silent skip)
  4. 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.yml já existe sem --force-overwrite → bail com hint pra runner edit
  • .git faltando → bail com hint pra git 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 --resume

Erros comuns

  • .deploy.yml já existe em ... → use runner edit ou rode com --force-overwrite
  • Repo em ... não tem .git → git init && git commit -m initial primeiro
  • Nenhum Dockerfile ou docker-compose.yml encontrado → crie um (template mostrado no erro)

Veja também

By Borlot.com.br on 29/05/2026