docs(projetos): plano de deploy do client.exe (rx) — delta electron/auto-update

This commit is contained in:
VPS 4 Deploy Agent
2026-06-18 00:11:15 +02:00
parent c0ca88c028
commit e02d11cbca
@@ -0,0 +1,28 @@
# 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/`.
## 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 never``rsync` 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 | **Versão pela tag** + exibir a versão na UI | 🧪 em andamento (dev) |
| 2 | **CI build por commit** (`.gitea/workflows`): builda o `.exe` e guarda como artefato; não publica em prod | 🎯 |
| 3 | **Promote por tag**: pega o `.exe` do commit, gera `latest.yml` com a versão da tag e publica em prod `updates/` | 🎯 |
| 4 | **Corte**: desligar `webhook-rx-client.service` (9004) e 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*.