runner pause / runner unpause
runner pause marca uma app como paused: o cron fetch --deploy a ignora
completamente até que seja despausada. A app continua rodando em produção —
apenas novos deploys são bloqueados. Disponível desde v2.30.10.
runner unpause reverte o estado, reativando a app para deploys automáticos.
Disponível desde v2.23.19.
Use quando: você precisa de um emergency stop — impedir que um novo push acidental na branch dist acione um deploy durante manutenção, sem precisar desregistrar a app.
Sintaxe
runner pause [OPTIONS] <APP>
runner unpause [OPTIONS] <APP>Flags (pause)
| Flag | Default | Descrição |
|---|---|---|
--motivo <TEXTO> |
— | Por que a app foi pausada. Alias --reason. Desde v2.165.0 |
--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 |
Flags (unpause)
| 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 |
O que fica registrado (v2.165.0+)
Toda pausa grava no state da app a nota, quem pausou, a origem e quando:
| Origem | Quem pausou | Nota |
|---|---|---|
cli (runner pause) |
SUDO_USER, senão USER |
o --motivo, se houver |
auto (falhas de fetch seguidas) |
runner |
o erro que estourou o limite |
adocao (adoção revertida) |
quem reverteu | o motivo da reversão |
O unpause tira essa marca do state. O histórico fica em
/opt/runner/logs/pause-events.jsonl, com um evento app_paused e um
app_unpaused por ciclo. O campo actor diz quem executou cada evento.
Exemplos
Pausar com o motivo
runner pause meu-app --motivo "LE rate limit no tester; DNS ainda não aponta"App meu-app paused. `runner fetch --deploy` will SKIP it.
manual · "LE rate limit no tester; DNS ainda não aponta" · por leo (cli) · desde 2026-10-24T14:23:23Z
To resume: runner unpause meu-appVerificar estado
runner status meu-app[PAUSED] production v1.0.1 healthy meu-app.exemplo.com
│ paused manual · "LE rate limit no tester; DNS ainda não aponta" · por leo (cli) · desde 2026-10-24T14:23:23Z
│ Retomar o deploy automático runner unpause meu-appO runner list também mostra [PAUSED]. Em JSON, o status traz o bloco
paused (reason, note, at, by, origin) e o list traz
paused: true.
Reativar após manutenção
runner unpause meu-appApp meu-app unpaused (had 0 consecutive errors, paused_reason=manual).
estava: manual · "LE rate limit no tester; DNS ainda não aponta" · por leo (cli) · desde 2026-10-24T14:23:23ZVer o histórico
grep '"app":"meu-app"' /opt/runner/logs/pause-events.jsonlOutput JSON
$ runner pause meu-app --json
{
"app": "meu-app",
"previous_status": "active",
"status": "paused"
}
$ runner unpause meu-app --json
{
"app": "meu-app",
"was_paused": true,
"status": "active"
}Diferença entre pause manual e auto-pause
O runner também pausa apps automaticamente quando max_consecutive_fetch_errors
é atingido (default: 10 falhas consecutivas). Ambos os tipos de pause são
resolvidos com runner unpause.
| Situação | Causa do pause | O que fazer antes de unpause |
|---|---|---|
| Pause manual | runner pause |
Concluir a manutenção |
| Auto-pause | Erros consecutivos no fetch | Corrigir o problema subjacente (repo, token, network) |
Despausar sem corrigir o problema em auto-pause fará a app entrar em loop e ser pausada novamente.
Fluxo de manutenção
# 1. Bloquear deploys automáticos
runner pause meu-app
# 2. Realizar manutenção (atualização de config, migração, etc.)
runner secrets set meu-app DB_HOST "novo-host"
runner deploy meu-app # deploy manual ainda é possível enquanto pausado
# 3. Liberar deploys automáticos
runner unpause meu-appO runner deploy manual funciona mesmo com a app pausada. O pause afeta apenas
o ciclo automático do cron.
Idempotência
runner pause é idempotente: pausar uma app já pausada não gera erro.
runner unpause em app não pausada zera consecutive_fetch_errors de forma
defensiva, sem erro.
Erros comuns
app_not_found— app não registrada neste servidor; verifique comrunner list.
Veja também
- `runner status` — verificar o estado atual da app
- `runner deploy` — deploy manual (funciona mesmo com app pausada)
- `runner fetch` — ciclo automático que respeita o estado paused
- `runner reset` — limpa estado completo (alternativa mais destrutiva)