runner debug last-error

/opt/runner/logs/deploy-events.jsonl, encontra o registro de falha de deploy mais recente para a app e o exibe: versão tentada, timestamp e mensagem completa de erro. Disponível desde v2.30.1 (Issue #16).

Use quando: runner fetch --deploy terminou com falha e as últimas linhas do output mostraram "Run: runner debug last-error " como próximo passo.

Sintaxe

runner debug last-error [OPTIONS] <APP>

Flags

Flag Default Descrição
--json Atalho para --output json
-o, --output <FORMAT> human Formato de saída: human, json, yaml
--insecure Bypassa guards de segurança (gera banner e audit log)
-h, --help Exibe ajuda

Exemplo

$ runner debug last-error meu-app
Last DeployFailure for meu-app:

  version    v1.4.2
  timestamp  2026-05-27T14:32:11Z
  error      healthcheck failed after 3 retries (GET /health 502 Bad Gateway)
             container exited with code 1 during startup
             see: docker logs meu-app-v1.4.2-blue

Output JSON:

$ runner debug last-error meu-app --json
{
  "app": "meu-app",
  "version": "v1.4.2",
  "timestamp": "2026-05-27T14:32:11Z",
  "error": "healthcheck failed after 3 retries (GET /health → 502 Bad Gateway)\ncontainer exited with code 1 during startup\nsee: docker logs meu-app-v1.4.2-blue",
  "event": "DeployFailure"
}

Como o runner expõe este comando

Durante fetch --deploy, quando um deploy falha, o runner imprime na saída:

Deploy FAILED for meu-app v1.4.2.
Next steps:
  runner debug last-error meu-app   # ver erro completo
  runner rollback meu-app           # voltar para versão anterior

O comando debug last-error é o subcomando last-error dentro do grupo debug, não um comando de nível superior chamado debug-last-error.

Arquivo de log subjacente

O runner grava cada evento de deploy (sucesso e falha) em:

/opt/runner/logs/deploy-events.jsonl

debug last-error faz tail nesse arquivo e retorna o registro mais recente com "event": "DeployFailure" para a app solicitada. Para inspecionar o histórico completo manualmente:

grep '"app":"meu-app"' /opt/runner/logs/deploy-events.jsonl \
  | jq 'select(.event == "DeployFailure")'

Quando não há falha registrada

$ runner debug last-error meu-app
No DeployFailure found for meu-app.

Isso indica que a app nunca falhou um deploy neste servidor, ou que o log foi rotacionado. Verifique com runner status meu-app se o estado atual é esperado.

Erros comuns

  • app_not_found — app não registrada neste servidor; verifique com runner list.
  • log_not_found/opt/runner/logs/deploy-events.jsonl ausente (runner antigo ou instalação limpa); nenhum deploy foi executado ainda neste servidor.

Veja também

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