Pular para o conteúdo principal

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):

  1. Verificar que a última salvaguarda existe (ver Salvaguarda).

  2. Listar as migrações que vão ser aplicadas:

    docker exec -u www-data pch_backend php bin/console doctrine:migrations:status
  3. 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 update no posto de desenvolvimento, testes, depois implantação; composer.lock é registado no repositório.
  • Frontend: npm install --legacy-peer-deps (as dependências exigem-no); verificar npx tsc --noEmit, os testes Jest e npm run build antes 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.