2.5 KiB
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(providergeneric) → o.exeinstalado puxa dehttps://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.ymlpublicados emdental-server/updates/. - Versão é BUILD-TIME (embutida no
.exe; oelectron-updatercompara 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; hoje1.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 never→rsyncdo.exe+latest.ymlpara a VPS1updates/. - 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.ymldos clients instalados nas clínicas — um arquivo errado afeta o update de todos. Testar antes do corte. - O
electron-updater/latest.ymlnão muda — só a origem da versão (tag) e o pipeline.