3.8 KiB
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.shno push) para a nova (CI valida no push; tag builda com a versão da tag e publica). Plano geral: verplano-deploy.md. Regra crítica: olatest.ymlemupdates/é 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, odeploy-client.shusa). - ⚠️ Desligar o serviço systemd
webhook-rx-client.servicepode 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
.exegerado 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
.exeestiver 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 →rsyncdo.exe/latest.ymlpara a VPS1updates/. - Conferir:
updates/latest.yml=1.3.9e o.exepresente.
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/cpdoupdates.bak_*/de volta paraupdates/→ no próximo check os clients voltam à versão anterior. - O
index.jsjá tem anti-loop de update (aborta após N tentativas) — ajuda se um.exeruim 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.jsondeixa de existir (versão = tag). - O
deploy-client.shfica obsoleto (substituído pelo CI) → mover paradesuso/. - Atualizar
plano-deploy.mdmarcando Fases 3/4 como ✅.