Pular para o conteúdo principal

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

FlagObrigatórioDescrição
-v VERSIONSimVersão de destino (ex: 0.2.0)
-bNãoPular rebuild das imagens Docker
-qNãoAtualização rápida — reload gracioso do PHP-FPM ao invés de restart completo
-uNãoPular 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
Rollback automático

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
Atenção

Antes de atualizar, sempre verifique as notas de release da versão de destino para instruções específicas ou breaking changes.