Status
Ativo, substituído, falhou, revertido ou expirado. A versão no ar fica destacada no topo da lista.
Deploys · rollback · sem downtime
Todo envio de código, pelo GitHub, pela CLI ou pelo painel, entra no histórico do app. Se a versão nova der problema, você volta para a anterior sem refazer nada. Nos planos maiores, a plataforma volta sozinha ou nem tira o app do ar.
Rollback automático
AtivoBuild de 41 s
feat: cupom de primeira compra
Falhou7c4e2f1mainBuild de 38 s
fix: timeout no checkout
SubstituídoCLIBuild de 12 s
Enviado pelo painel
SubstituídoPainel
Cada envio de código vira uma versão completa, venha de onde vier. A aba Rollbacks mostra qual está no ar e o que veio antes. Quem fez o quê continua na aba Atividades.
Ativo, substituído, falhou, revertido ou expirado. A versão no ar fica destacada no topo da lista.
O SHA curto e a mensagem do commit. Envio sem mensagem ganha um rótulo pela origem, como “Enviado pela CLI”.
GitHub com a branch, CLI, painel ou editor de arquivos. Um rollback também entra na lista, como versão nova.
Quanto tempo o build levou. Quando a versão falha, “Ver log” abre o registro daquela queda.
Escolha a versão e confirme. A plataforma troca os arquivos e reinicia o app na mesma operação. O rollback entra no histórico como uma versão nova, então dá para desfazê-lo do mesmo jeito.
Todos os arquivos do código voltam como estavam naquela versão. Arquivos que chegaram por commits depois dela são removidos.
O que o app grava rodando, como um banco SQLite ou uploads, não faz parte de nenhuma versão e fica como está. Para voltar dados, use os Snapshots.
Por padrão, as variáveis atuais ficam. Marque a opção para voltar as variáveis com que aquela versão rodava. O diálogo lista quais mudariam, só pelo nome, sem mostrar valores.
Voltar para 3b9a0d4
“fix: timeout no checkout” (ontem, 18:04)
Arquivos do código: sempre voltam.
Voltar as variáveis de ambiente daquele deploy
Variáveis que mudam
Os dados que o app criou rodando não voltam. O app reinicia ao confirmar.
Vem ligado nos planos que incluem o recurso, e dá para desligar nas configurações do app.
A versão nova sobe com o código que acabou de chegar.
Se o app parar nos primeiros 60 segundos, o auto-restart não insiste na versão nova: a plataforma volta para a anterior, uma vez só.
Uma notificação diz que o deploy caiu e para qual versão o app voltou, com link para o log da versão que falhou.
Num app que recebe tráfego web, o deploy não derruba a versão no ar: a nova sobe junto, passa pela checagem de saúde e só então assume.
A versão nova instala as dependências, faz o build e inicia enquanto a atual continua atendendo.
A plataforma faz requisições no caminho configurado (padrão “/”) até ter duas respostas boas seguidas. Qualquer resposta HTTP conta, até 404; erro 5xx ou conexão recusada, não.
Saudável, a versão nova passa a receber o tráfego e a anterior é desligada.
Se a versão nova não ficar saudável em cerca de 2 minutos, ela é descartada e a anterior segue no ar, sem ter parado.
A segunda cópia não conta na RAM do seu plano durante a troca. Se o servidor não tiver memória livre para ela, o deploy para a versão atual antes de subir a nova, com o rollback automático valendo.
Dois processos com o mesmo token recebem os mesmos eventos. Durante a troca, um comando por prefixo seria respondido duas vezes, um slash command daria erro de interação já respondida numa das cópias e tarefas agendadas rodariam em dobro. E um bot não recebe tráfego web, então não há tráfego para trocar de versão.
O padrão. Sem downtime só para apps que recebem tráfego web; bots e workers param e sobem, com o rollback automático.
Força o deploy sem downtime em qualquer app, inclusive bots. Sem tráfego web, a versão nova é saudável depois de 30 segundos rodando sem cair. Durante a troca, um evento pode ser respondido duas vezes.
A versão atual para antes de a nova subir. Serve para apps que leem arquivos a cada requisição; o app fica alguns segundos fora do ar.
As versões contam além da que está no ar. A validade começa quando a versão deixa de ser a ativa; a versão no ar nunca expira. Depois da validade, a versão continua no histórico, mas não dá mais para voltar a ela.
| Plano | Versões anteriores | Validade | Rollback automático | Sem downtime |
|---|---|---|---|---|
| Economy | Só leitura | Não incluído | Não incluído | |
| Pro | 3 | 7 dias | Não incluído | Não incluído |
| Scale | 5 | 14 dias | Não incluído | Não incluído |
| Intermediary | 10 | 30 dias | Incluído | Não incluído |
| Enterprise-4 · 6 · 8 | 15 | 30 dias | Incluído | Incluído |
| Enterprise-12 · 14 · 16 | 20 | 30 dias | Incluído | Incluído |
| Enterprise-18 · 20 · 22 · 24 | 25 | 30 dias | Incluído | Incluído |
| Enterprise-26 · 28 · 30 · 32 | 30 | 30 dias | Incluído | Incluído |
No Enterprise, o número de versões cresce com o degrau do plano.
Comparar planosO que acontece com código, dados e variáveis quando você volta uma versão.
Não. O rollback troca só o código. O que o app grava rodando, como um banco SQLite ou arquivos enviados pelos usuários, fica como está. Um arquivo que você mesmo commitou volta como qualquer outro arquivo do código. Para voltar dados, use os Snapshots.
Sim, se você marcar a opção no diálogo. Ela volta as variáveis com que aquela versão rodava. Antes de confirmar, o diálogo lista só os nomes das variáveis que mudariam; os valores nunca aparecem.
Sim. Todo envio de código vira uma versão completa, venha de onde vier, e qualquer uma delas pode ser o destino de um rollback enquanto estiver dentro do limite e da validade do plano.
O histórico começa no primeiro envio de código depois do lançamento do recurso. Versões anteriores a isso não foram guardadas, então não há como voltar para elas.
Valem o número de versões e a validade do plano novo. Num downgrade, as versões além do limite deixam de estar disponíveis; num upgrade, o que já foi apagado não volta.
Sim, nas configurações do app ou pela API, em PATCH /v1/apps/:id/config. Desligado, uma queda logo depois do deploy segue o auto-restart normal.
A partir do Pro
Crie a conta, suba o app e o histórico começa no primeiro envio de código.