runner rollback

Volta uma instância da aplicação para uma versão anterior que ainda está guardada no servidor.

Sintaxe

runner rollback <app> [-v <versão>] [-i <instância>]

Parâmetros

Parâmetro Obrigatório Descrição
<app> Sim Nome do registro (slug), projeto/sistema ou caminho da app
-v, --version Não Versão de destino. Sem ela, volta para a versão anterior à atual
-i, --instance Não Instância a reverter. Sem ela, usa a instância do registro (v2.151.0+)

Qual instância é revertida (v2.151.0+)

Sem -i, o rollback resolve a instância na mesma ordem do deploy:

  1. a instância com que a app foi registrada (runner add --instance <N>);
  2. a instância default do manifesto;
  3. production.

Antes da v2.151.0, o rollback usava sempre production. Uma app registrada em staging ou homolog falhava com Instance 'production' not found. Se a pasta tivesse também a instância production, o rollback revertia a instância errada.

Exemplos

# Volta a instância do registro para a versão anterior
runner rollback meu-app

# Volta para uma versão específica
runner rollback meu-app -v v1.2.3

# Instância explícita
runner rollback meu-app -i staging

O que o rollback faz

  1. Escolhe a versão de destino: a pedida em -v ou a anterior à atual.
  2. Sobe o container da versão de destino e espera ficar saudável (até 120 s).
  3. Atualiza o roteamento do Traefik para a versão de destino.
  4. Grava o estado (v2.151.4+): o current_version da app passa a ser a versão de destino, e o runner logs history ganha uma entrada ROLLBACK.
  5. Emite o evento RollbackSuccess nos canais de notificação.

O container da versão revertida fica parado no servidor. Desde a v2.151.5, status, instances, list, snapshot e health mostram o container que está rodando, não o parado.

Rollback e o cron

O cron (runner fetch --deploy) não desfaz o rollback. Ele compara o commit remoto com o último commit já tratado. O commit revertido continua contando como tratado, então o cron só volta a fazer deploy quando chega um commit novo na branch.

Para impedir até isso enquanto investiga, pause a app antes do rollback. O rollback mantém a pausa do operador:

runner pause meu-app
runner rollback meu-app
# ... investigação e correção ...
runner unpause meu-app

Erros comuns

Mensagem Causa
Sem versão para onde voltar Só existe a versão atual guardada (keep_versions no manifesto)
rollback_para_versao_no_ar -v pediu a versão que já está no ar. Nada é parado (v2.158.0+). Para recriar o container: runner deploy <app> --force
Instance '<nome>' not found A instância pedida em -i não existe no manifesto

O comando sai com código diferente de 0 em qualquer falha, e a causa vai para o stderr.

Listando versões

runner versions meu-app

Sem -i, mostra as versões da instância do registro (v2.151.2+).

Veja também

By Borlot.com.br on 09/10/2026