Atualização
Processo para atualizar o ION Guard para uma versão mais recente com segurança e possibilidade de rollback.
Comando
cd /home/iongrade/ionguard
./scripts/upgradeToNewestVersion.sh -v 0.2.0
Parâmetros
| Flag | Obrigatório | Descrição |
|---|---|---|
-v VERSION | Sim | Versão de destino (ex: 0.2.0) |
-b | Não | Pular rebuild das imagens Docker |
-q | Não | Atualização rápida — reload gracioso do PHP-FPM ao invés de restart completo |
-u | Não | Pular avisos de upgrade |
Fluxo de atualização
O script executa as seguintes etapas em ordem:
1. Download do pacote
On-premises: Baixa o pacote criptografado do servidor de distribuição e descriptografa com a passphrase da facility.
SaaS: Atualiza via git fetch e git checkout da tag de versão.
2. Parar workers
Workers de fila (Horizon), scheduler e listeners MQTT são parados para evitar processamento durante a migração.
3. Backup do código atual
O diretório app/ é renomeado para app_old/ de forma atômica. Isso permite rollback instantâneo em caso de falha.
4. Extração da nova versão
O novo código e os arquivos de deploy são extraídos nos diretórios corretos.
5. Migração do banco de dados
php artisan migrate --force
Se a migração falhar, o script automaticamente restaura app_old/ para app/ e reinicia os serviços com a versão anterior. A atualização é abortada com mensagem de erro.
6. Limpar cache e otimizar
php artisan optimize:clear
php artisan optimize
7. Restart dos serviços
Todos os containers são reiniciados com o novo código.
8. Permissões
Permissões de arquivo são reajustadas via setPermissions.sh.
9. Limpeza
O diretório app_old/ é removido após confirmar que tudo está funcionando.
Atualização rápida
A flag -q faz um reload gracioso do PHP-FPM ao invés de reiniciar todos os containers. Isso minimiza o downtime para atualizações menores que não alteram a infraestrutura:
./scripts/upgradeToNewestVersion.sh -v 0.2.1 -q
Verificação pós-atualização
Após a atualização, verifique:
# Verificar versão
./scripts/getVersion.sh
# Health check
./scripts/healthcheck.sh
# Status dos containers
./scripts/comp.sh ps
# Logs de erro
./scripts/comp.sh logs -f ionguard_php --tail 50
Rollback manual
Se necessário fazer rollback manual (caso o automático não tenha ocorrido):
# Se app_old/ ainda existe
mv app app_bad && mv app_old app
# Reverter migrations (se a migração foi aplicada)
./scripts/comp.sh exec -T ionguard_php php artisan migrate:rollback
# Restart
./scripts/restartAllServices.sh
Antes de atualizar, sempre verifique as notas de release da versão de destino para instruções específicas ou breaking changes.