runner unregister

Remove completamente uma aplicacao registrada do Runner. Para containers, remove configs Traefik, deleta o diretorio da app e limpa todos os state files.

Sintaxe

runner unregister <app>
runner unregister <app> --force
runner unregister <app> --keep-running
runner unregister <app> --keep-traefik
runner unregister <app> --force --json

Argumentos

Argumento Tipo Obrigatorio Descricao
app string Sim Nome da app, path ou project/system

Flags

Flag Default Descricao
--force false Pula confirmacao interativa
--keep-running false Nao para nem remove containers
--keep-traefik false Nao remove configs Traefik
--json false Output em JSON
-x, --exact false Desliga a resolucao por query: um alvo so
-y, --yes false Confirma quando a query casa varios alvos do mesmo projeto. Distinto de --force (que pula o guard de backup) e nao autoriza atravessar projetos

O que e removido

Por padrao (sem flags), o unregister executa 5 etapas:

Etapa O que remove Flag para pular
1 Containers (por label CCS) --keep-running
2 Configs Traefik (*.yml) --keep-traefik
3 Diretorio da app -
4 State files (principal + PRs) -
5 State de canary -

Cenarios de Uso

Remover tudo (padrao)

runner unregister print
# Remove app 'print' and all its data? [y/N] y
# Unregistered 'print' (8 items cleaned)

Remover sem confirmacao (automacao)

runner unregister print --force

Desregistrar mas manter rodando (migracao)

Util quando quer parar de gerenciar via Runner mas manter o servico ativo:

runner unregister print --force --keep-running --keep-traefik

Remove apenas: diretorio da app, state files, canary state. Mantém: container rodando, Traefik roteando.

Parar container mas manter rota (debug)

runner unregister print --force --keep-traefik

Output JSON (integracao CCS Client)

runner unregister print --force --json
{
  "app": "print",
  "project": "print",
  "removed": true,
  "cleaned": [
    "container:print_production_v1-0-0",
    "traefik:devborlot_print_production.yml",
    "dir:/data/apps/print",
    "state:print.yml"
  ]
}

Diferenca entre unregister, remove e destroy

Comando Escopo Uso
runner unregister <app> App inteira Remove tudo: containers, traefik, dir, state
runner remove <app> --pr N PR deploy Remove apenas um PR deploy especifico
runner destroy <project> -i <instance> Instancia Remove containers e traefik de uma instancia

Veja Tambem

Multiplos alvos e a fronteira do projeto (v2.80.0+)

<app> nao e um nome exato: e uma query, casada por segmento. runner unregister ccs alcanca ccs/sys, ccs/front e ccs/worker — replicar o comando nos sistemas de um projeto e o desenho do runner, nao um acidente.

Situacao Comportamento
1 alvo Executa direto, sem cerimonia
N alvos, mesmo projeto Lista os alvos e pede confirmacao. -y, --yes dispensa
N alvos, projetos distintos Terminal: pergunta. Cron/CI (sem TTY): aborta com exit != 0. Nenhuma flag autoriza

O "projeto" aqui e a raiz antes do primeiro hifen: ccs-front e ccs-sys sao o mesmo projeto (ccs); ccs-front e nfse-front nao sao.

Por que `--yes` nao autoriza atravessar

--yes e passado por habito, em script e cron. Se valesse para o cruzamento, o gate morreria exatamente onde ninguem esta olhando. Uma query casa por segmento e deveria cair dentro de uma familia — atravessar e anomalia, nao intencao.

ERROR unregister atravessa 2 projetos (ccs, nfse) em 4 alvos:
  - ccs/sys
  - ccs/front
  - nfse/sys
  - nfse/front

Uma query casa por segmento e deveria cair dentro de UMA família — atravessar aqui é anomalia, não intenção, e por isso nenhuma flag autoriza.
Este comando não opera em massa entre projetos: rode um projeto por vez.
Para um alvo só: -x

Em terminal interativo o cruzamento pergunta em vez de abortar. Em cron/CI (sem TTY) aborta com exit != 0.

Saidas:

  • -x, --exact — desliga a query e mira um alvo so
  • rodar um projeto por vez
By Borlot.com.br on 20/04/2026