Atualização
Atualizar a aplicação
Uma atualização do Bemba é uma implantação: pré-produção (staging), teste no ecrã, depois produção (main).
Antes de uma atualização que toca na base (novas migrações):
-
Verificar que a última salvaguarda existe (ver Salvaguarda).
-
Listar as migrações que vão ser aplicadas:
docker exec -u www-data pch_backend php bin/console doctrine:migrations:status -
Implantar primeiro na pré-produção e verificar aí os ecrãs afetados.
As migrações são executadas automaticamente no arranque do novo contentor backend. Uma migração que falha impede o arranque: ler docker logs pch_backend.
Voltar atrás
- Frontend, documentação: reimplantar o build da versão anterior (reconstruído a partir do commit desejado).
- Backend sem migração: reimplantar o arquivo do commit anterior.
- Backend com migração: a maioria das migrações de dados não é reversível; restaurar a base (ver Restauro) e depois reimplantar a versão antiga. Daí a importância de testar na pré-produção.
Atualizar as imagens Docker
cd ~/pch-sig
docker compose -f docker-compose.prod.yml pull # imagens públicas (nginx, postgres, redis, traefik…)
docker compose -f docker-compose.prod.yml build --pull backend
docker compose -f docker-compose.prod.yml up -d
docker image prune -f
- PostgreSQL: uma mudança de versão maior (15 → 16) exige exportação/importação; nunca mudar a etiqueta da imagem sem plano de migração.
- Traefik: ler as notas de versão antes de uma mudança de versão maior.
Dependências do código
- Backend:
composer updateno posto de desenvolvimento, testes, depois implantação;composer.locké registado no repositório. - Frontend:
npm install --legacy-peer-deps(as dependências exigem-no); verificarnpx tsc --noEmit, os testes Jest enpm run buildantes de registar.
Sistema
sudo apt update && sudo apt upgrade -y
sudo reboot # se o núcleo mudou; ver Arranque automático
As atualizações de segurança são aplicadas automaticamente (unattended-upgrades).
Serviços da pré-produção
- KoboToolbox: através de
~/kobo-install(python3 run.py --update), ver KoboToolbox auto-alojado. - GitLab:
docker compose -f ~/gitlab/docker-compose.yml pull && … up -d, respeitando o percurso de atualização do GitLab; salvaguarda (gitlab-backup create) antes.