Pular para o conteúdo principal

Atualização

Este guia explica como atualizar o PCH-SIG para uma nova versão.

Preparação

Verificar a versão atual

# Versão backend
docker exec pch_backend php bin/console --version

# Versão frontend (em package.json)
cat frontend/package.json | grep version

Fazer backup antes da atualização

Importante

Sempre faça um backup completo antes de qualquer atualização.

# Backup rápido
docker exec pch_postgres pg_dump -U pch_admin pch_sig > backup_antes_atualizacao.sql

Atualização do Frontend

Etapa 1: Obter as modificações

cd frontend

# Obter as últimas modificações
git pull origin main

# Instalar as novas dependências
npm install

Etapa 2: Build de produção

npm run build

Etapa 3: Implantar no servidor

# Criar a sessão PowerShell
$cred = Get-Credential
$session = New-PSSession -ComputerName serveur-production -Credential $cred

# Copiar o build
Copy-Item -Path ".\build\*" -Destination "C:\pch-sig\frontend\build" -ToSession $session -Recurse -Force

# Reiniciar o contêiner
Invoke-Command -Session $session -ScriptBlock {
docker-machine ssh default "docker restart pch_frontend"
}

Remove-PSSession $session

Etapa 4: Atualizar o Service Worker

Incrementar a versão do cache em frontend/public/service-worker.js:

// Antes
const CACHE_NAME = 'pch-sig-cache-v2';

// Depois
const CACHE_NAME = 'pch-sig-cache-v3';

Atualização do Backend

Etapa 1: Obter as modificações

cd backend

# Obter as últimas modificações
git pull origin main

# Instalar as dependências
composer install --no-dev --optimize-autoloader

Etapa 2: Executar as migrações

# Verificar as migrações pendentes
php bin/console doctrine:migrations:status

# Executar as migrações
php bin/console doctrine:migrations:migrate --no-interaction

Etapa 3: Limpar o cache

php bin/console cache:clear --env=prod
php bin/console cache:warmup --env=prod

Etapa 4: Implantar no servidor

# Copiar os arquivos backend
Copy-Item -Path ".\src\*" -Destination "C:\pch-sig\backend\src" -ToSession $session -Recurse -Force
Copy-Item -Path ".\config\*" -Destination "C:\pch-sig\backend\config" -ToSession $session -Recurse -Force

# Executar as migrações no servidor
Invoke-Command -Session $session -ScriptBlock {
docker exec pch_backend php bin/console doctrine:migrations:migrate --no-interaction
docker exec pch_backend php bin/console cache:clear --env=prod
}

Atualização dos Contêineres Docker

Atualizar as imagens

cd deploy

# Baixar as novas imagens
docker compose pull

# Reiniciar com as novas imagens
docker compose up -d

Reconstruir uma imagem personalizada

Se você modificou um Dockerfile:

# Reconstruir a imagem backend
docker compose build backend

# Reiniciar o contêiner
docker compose up -d backend

Gestão das Migrações de Banco de Dados

Verificar o estado das migrações

docker exec pch_backend php bin/console doctrine:migrations:status

Criar uma nova migração

docker exec pch_backend php bin/console make:migration

Reverter a última migração

docker exec pch_backend php bin/console doctrine:migrations:migrate prev

Executar uma migração específica

docker exec pch_backend php bin/console doctrine:migrations:execute 'DoctrineMigrations\Version20240115120000' --up

Rollback em caso de problema

Restaurar o frontend

# Os backups estão em C:\pch-sig\backups\
Copy-Item -Path "C:\pch-sig\backups\frontend-YYYYMMDD\*" -Destination "C:\pch-sig\frontend\build" -Recurse -Force

docker restart pch_frontend

Restaurar o backend

# Voltar para a versão anterior do código
git checkout HEAD~1

# Reverter as migrações
docker exec pch_backend php bin/console doctrine:migrations:migrate prev

Restaurar o banco de dados

# Restaurar a partir do backup
docker exec -i pch_postgres psql -U pch_admin -d pch_sig < backup_antes_atualizacao.sql

Atualizações maiores

Mudança de versão PHP

  1. Atualizar a imagem em docker-compose.yml
  2. Verificar a compatibilidade das dependências Composer
  3. Testar em ambiente de desenvolvimento
  4. Implantar em produção

Mudança de versão PostgreSQL

  1. Exportar todos os dados
  2. Parar o contêiner antigo
  3. Atualizar a imagem
  4. Restaurar os dados
# Export completo
docker exec pch_postgres pg_dumpall -U pch_admin > full_backup.sql

# Atualizar e restaurar
docker compose down postgres
# Modificar a versão em docker-compose.yml
docker compose up -d postgres
docker exec -i pch_postgres psql -U pch_admin < full_backup.sql

Checklist de atualização

  • Fazer backup do banco de dados
  • Fazer backup dos arquivos de configuração
  • Anotar a versão atual
  • Obter as modificações (git pull)
  • Instalar as dependências
  • Executar as migrações
  • Limpar o cache
  • Implantar no servidor
  • Testar a aplicação
  • Atualizar a versão do Service Worker
  • Informar os usuários

Próximos passos