Files

3.8 KiB

rx.scoreodonto.com-client — Runbook do upgrade do build (corte para CI/tag)

Como migrar o client da forma antiga (webhook 9004 → deploy-client.sh no push) para a nova (CI valida no push; tag builda com a versão da tag e publica). Plano geral: ver plano-deploy.md. Regra crítica: o latest.yml em updates/ é o que TODOS os clients nas clínicas leem — um arquivo errado quebra o auto-update de todos. Por isso: backup + teste num Windows ANTES de publicar.

Pré-requisitos

  • Fase 1 (versão no tray) + Fase 2 (.gitea/workflows/build.yml) prontas (hoje no working tree, não commitadas).
  • Windows de teste com o client instalado, para validar o auto-update.
  • Gitea Actions habilitado no repo do client.
  • SSH VPS4→VPS1 (o release usa rsync; já existe, o deploy-client.sh usa).
  • ⚠️ Desligar o serviço systemd webhook-rx-client.service pode exigir sudo — confirmar o acesso antes.

Ordem do corte (com janela de teste e rollback)

0. Backup (rede de rollback)

Na VPS1, copiar o updates/ atual:

ssh deploy@10.99.0.1 'cp -a /home/deploy/stack/rx.scoreodonto.com/dental-server/updates \
  /home/deploy/stack/rx.scoreodonto.com/dental-server/updates.bak_$(date +%Y%m%d_%H%M)'

1. Cortar o gatilho antigo (senão push dispara o build antigo)

  • systemctl disable --now webhook-rx-client.service (porta 9004).
  • No Gitea (repo client → Settings → Webhooks): desabilitar o webhook que aponta para a :9004.
  • Resultado: push no repo do client não dispara mais o deploy-client.sh.

2. Habilitar o CI + subir o pipeline

  • Gitea → repo client → Settings → Actions: habilitar.
  • git add -A && git commit && git push origin main (build.yml + index.js da Fase 1).
  • O CI roda o job build (electron-builder --publish never) → confirma que compila. Não publica. Conferir CI verde.

3. Validar o .exe num Windows ANTES de publicar

  • Pegar o .exe gerado pelo CI (artefato do runner / dist/) ou rodar o build na VPS4.
  • Instalar num Windows de teste: app abre, "Versão v…" no tray, captura/envio do sensor funciona, conecta ao server.
  • (Gate manual: só seguir para a tag se o .exe estiver ok — porque o passo 4 publica para todos.)

4. Primeira release pela tag

  • Próxima versão (a atual é 1.3.8): git tag v1.3.9 && git push origin v1.3.9.
  • O CI job release: npm version 1.3.9 → build → rsync do .exe/latest.yml para a VPS1 updates/.
  • Conferir: updates/latest.yml = 1.3.9 e o .exe presente.

5. Validar o auto-update em campo (1 client monitorado)

  • Num client de teste: "Verificar Atualizações" → detecta 1.3.9 → baixa → instala → reinicia → tray mostra "Versão v1.3.9".
  • Observar: sem erro de update, app reconecta, envio volta.

6. Rollback (se quebrar)

  • Restaurar o backup: rsync/cp do updates.bak_*/ de volta para updates/ → no próximo check os clients voltam à versão anterior.
  • O index.js já tem anti-loop de update (aborta após N tentativas) — ajuda se um .exe ruim foi instalado.

Riscos a tratar (antes/durante)

  • Code signing (SmartScreen): sem assinatura, o Windows alerta em novas instalações (não bloqueia o auto-update de quem já tem o app). Pendência antiga do RX.
  • Versão crescente: a tag (1.3.9) tem que ser > a atual (1.3.8), senão o electron-updater não atualiza.
  • latest.yml único para todos → o teste do passo 3 e o backup do passo 0 são obrigatórios.
  • systemd/sudo para desligar o webhook (passo 1).

Pós-corte (limpeza)

  • O bump manual do package.json deixa de existir (versão = tag).
  • O deploy-client.sh fica obsoleto (substituído pelo CI) → mover para desuso/.
  • Atualizar plano-deploy.md marcando Fases 3/4 como .