runner cleanup
Limpeza de recursos nao utilizados: versoes antigas, containers orfaos, PRs expirados, imagens Docker e build cache.
Sintaxe
runner cleanup [OPTIONS]Opcoes
| Opcao | Descricao |
|---|---|
--project <NAME> |
Limpar apenas versoes de um projeto especifico |
--expired |
Limpar instancias efemeras expiradas |
--orphans |
Limpar containers orfaos (versoes antigas rodando) |
--prs |
Limpar PRs expirados (TTL) ou merged/closed (via GitHub API) |
--images |
Remover imagens Docker nao utilizadas de projetos gerenciados |
--build-cache [FILTER] |
Prune do Docker buildkit cache. Default: 72h |
--dry-run |
Preview sem executar (mostra o que seria removido) |
-V, --verbose |
Output detalhado |
Exemplos
Containers orfaos
runner cleanup --orphans --dry-run
runner cleanup --orphansPRs expirados
runner cleanup --prs --dry-run
runner cleanup --prsImagens Docker
runner cleanup --images --dry-run
runner cleanup --imagesRemove imagens no formato {project}:{version} que nao estao em uso por nenhum container rodando. Apos remover, executa docker image prune -f para limpar dangling layers.
Build cache
runner cleanup --build-cache # Prune cache > 72h (default)
runner cleanup --build-cache 24h # Prune cache > 24h
runner cleanup --build-cache 168h # Prune cache > 7 dias
runner cleanup --build-cache all # Prune TUDO (proximo build refaz do zero)
runner cleanup --build-cache --dry-run # Preview (mostra docker builder du)Combo completo
runner cleanup --images --build-cache 72h --orphans --prsLimpeza automatica
O pipeline de deploy limpa automaticamente:
- Versoes antigas: Ao deployar, versoes que excedem
keep_versionssao removidas (container + source dir + imagem Docker) - PRs expirados: No
fetch --deploy, PRs com TTL expirado sao removidos automaticamente (configuravel viaauto_cleanup_prsno config.yml)
`--reset-root` (v2.15.0+) — migracao do fluxo de clone
Ferramenta de migracao opt-in pra apps registradas antes da v2.15.0, onde runner add clonava o repo inteiro na raiz do app dir (resultando em codigo duplicado entre raiz e src/{instance}/{ver}/).
Comportamento
Remove tudo do app dir exceto a whitelist:
- dirs preservados:
src/,data/,logs/,pull/,.runner/ - files preservados:
.deploy.yml,.env,.secrets
Cria snapshot automatico (trigger pre-reset-root) antes de remover qualquer coisa. Pra reverter:
runner config-backups list --app meu-app # acha o snapshot
runner config-backups restore <id> # restauraUso
# Preview (nao remove nada)
runner cleanup --reset-root --project meu-app --dry-run
# Executa em uma app especifica
runner cleanup --reset-root --project meu-app
# Executa em TODAS as apps registradas
runner cleanup --reset-rootPor que rodar
Apps registradas pre-2.15.0 tem essa estrutura tipica:
/data/apps/middleware-241/
├── app/ ← codigo da raiz (clone original)
├── bootstrap/
├── composer.json
├── ...
└── src/production/v1/
├── app/ ← MESMO codigo, duplicado!
└── ...Apos --reset-root:
/data/apps/middleware-241/
├── .deploy.yml
├── .env, .secrets
├── .runner/secrets.enc
├── data/, logs/, pull/
└── src/production/v1/ ← codigo so aquiQuando NAO usar
- Apps recem-registradas (v2.15.0+) ja nascem limpas, nao precisa
- Apps com bind-mount customizado pra raiz (verifique
docker inspectantes)
Cron recomendado
# Semanal: imagens + build cache + containers orfaos
0 5 * * 0 /opt/runner/runner cleanup --images --build-cache 72h --orphans
# Diario: PRs expirados/merged
0 2 * * * /opt/runner/runner cleanup --prs
By Borlot.com.br on 17/04/2026