Files
Documentos-Unicos/projetos/rx.scoreodonto.com-client/plano-deploy.md
T

2.5 KiB

rx.scoreodonto.com-client — Plano de deploy (delta do client.exe)

Delta específico deste projeto. O modelo universal está em ../../deploy/. Aqui só o que difere: é um app desktop Electron (não um serviço web), distribuído por auto-update (electron-updater).

O que torna este projeto diferente

  • Electron + electron-builder (target NSIS, Windows x64), cross-compile no Linux (VPS4).
  • Auto-update via electron-updater (provider generic) → o .exe instalado puxa de https://rx.scoreodonto.com/updates/latest.yml. Esse mecanismo é mantido (clients em campo dependem dele).
  • Não é "imagem Docker promovida" como os serviços web — o artefato é o .exe + latest.yml publicados em dental-server/updates/.
  • Versão é BUILD-TIME (embutida no .exe; o electron-updater compara versões): não há "build once" puro. A release é buildada na TAG (com a versão da tag); o push só valida que compila. (É o oposto dos serviços web, onde a versão é injetada em runtime.)

Estado atual (analisado em 17/jun/2026)

  • Versão vem do package.json (manual; hoje 1.3.8).
  • Build/publish via deploy-client.sh, disparado pelo webhook porta 9004 no push (push → build + publica em produção) ou manual: electron-builder --win --x64 --publish neverrsync do .exe+latest.yml para a VPS1 updates/.
  • Sem CI, sem build-once/promote, sem rastreabilidade commit→artefato.

Plano (Build Once → Promote → Deploy, adaptado)

Fase O que Status
1 Exibir a versão na UI (menu do tray, app.getVersion()) (dev, sem push)
2 CI: push na main → build de validação (cross-compile, NÃO publica) 🧪 (.gitea/workflows/build.yml criado, dev)
3 Tag → release: builda COM a versão da tag (npm version) + publica .exe/latest.yml em updates/ (rsync VPS1) 🎯
4 Corte: desligar webhook-rx-client.service (9004); validar o auto-update dos clients em campo 🎯
5 Manter este documento atualizado

Riscos a tratar

  • Cross-compile Windows no Linux (electron-builder/wine) no CI.
  • Code signing do .exe (SmartScreen) — pendência antiga do RX.
  • NÃO quebrar o latest.yml dos clients instalados nas clínicas — um arquivo errado afeta o update de todos. Testar antes do corte.
  • O electron-updater/latest.yml não muda — só a origem da versão (tag) e o pipeline.