From e02d11cbca55de7b317ad01686ab8d33687a89e3 Mon Sep 17 00:00:00 2001 From: VPS 4 Deploy Agent Date: Thu, 18 Jun 2026 00:11:15 +0200 Subject: [PATCH] =?UTF-8?q?docs(projetos):=20plano=20de=20deploy=20do=20cl?= =?UTF-8?q?ient.exe=20(rx)=20=E2=80=94=20delta=20electron/auto-update?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rx.scoreodonto.com-client/plano-deploy.md | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 projetos/rx.scoreodonto.com-client/plano-deploy.md diff --git a/projetos/rx.scoreodonto.com-client/plano-deploy.md b/projetos/rx.scoreodonto.com-client/plano-deploy.md new file mode 100644 index 0000000..8b2d5d3 --- /dev/null +++ b/projetos/rx.scoreodonto.com-client/plano-deploy.md @@ -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*.