docs: add auto-update architecture README

This commit is contained in:
rtmedical-devops 2026-06-10 09:54:22 +00:00
parent e4aa9da7f8
commit 8531fbe2c2

View File

@ -1,3 +1,96 @@
# updates
# apps/updates — Auto-update manifests
Este repositório serve os manifestos `latest.json` para o auto-update Tauri das aplicações RT Medical.
## Como funciona
O Tauri verifica atualizações consultando uma URL fixa ao iniciar o app. Essa URL aponta para o `latest.json` deste repo. Se a versão no manifesto for maior que a instalada, o app baixa e instala silenciosamente (estilo VS Code).
```
App inicia
└─► GET https://pkg.rtmedical.ai/apps/updates/raw/branch/main/{app}/latest.json
└─► versão nova? → baixa binário do Generic Package Registry → instala
```
## Estrutura
```
updates/
├── autoseg-desktop/
│ └── latest.json ← consultado pelo AutoSeg Desktop (Tauri)
└── voxelview/
└── latest.json ← consultado pelo VoxelView (Tauri)
```
## URL do endpoint (tauri.conf.json)
```json
"plugins": {
"updater": {
"endpoints": [
"https://pkg.rtmedical.ai/apps/updates/raw/branch/main/autoseg-desktop/latest.json"
],
"pubkey": "<Ed25519 public key>"
}
}
```
## Formato do latest.json
```json
{
"version": "1.2.3",
"notes": "Descrição do que mudou nesta versão.",
"pub_date": "2026-06-10T00:00:00Z",
"platforms": {
"windows-x86_64": {
"url": "https://pkg.rtmedical.ai/apps/-/packages/generic/autoseg-desktop/1.2.3/autoseg-desktop_1.2.3_x64.msi.zip",
"signature": "<Ed25519 sig>"
},
"linux-x86_64": {
"url": "https://pkg.rtmedical.ai/apps/-/packages/generic/autoseg-desktop/1.2.3/autoseg-desktop_1.2.3_amd64.AppImage.tar.gz",
"signature": "<Ed25519 sig>"
},
"darwin-aarch64": {
"url": "https://pkg.rtmedical.ai/apps/-/packages/generic/autoseg-desktop/1.2.3/autoseg-desktop_1.2.3_aarch64.dmg.tar.gz",
"signature": "<Ed25519 sig>"
},
"darwin-x86_64": {
"url": "https://pkg.rtmedical.ai/apps/-/packages/generic/autoseg-desktop/1.2.3/autoseg-desktop_1.2.3_x86_64.dmg.tar.gz",
"signature": "<Ed25519 sig>"
}
}
}
```
## Como o CI atualiza este arquivo
```bash
SHA=$(curl -s https://pkg.rtmedical.ai/api/v1/repos/apps/updates/contents/{app}/latest.json \
-H "Authorization: token $GITEA_TOKEN" | jq -r .sha)
curl -X PUT https://pkg.rtmedical.ai/api/v1/repos/apps/updates/contents/{app}/latest.json \
-H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"message\": \"release: v1.2.3\", \"content\": \"$(base64 -w0 latest.json)\", \"sha\": \"$SHA\"}"
```
## Binários (Generic Package Registry)
Os binários ficam em `https://pkg.rtmedical.ai/apps/-/packages/generic/{app}/{version}/`
Upload via CI:
```bash
curl -X PUT https://pkg.rtmedical.ai/api/packages/apps/generic/{app}/{version}/{file} \
-H "Authorization: token $GITEA_TOKEN" \
--data-binary @arquivo
```
## Adicionando um novo app Tauri
1. Criar pasta `{novo-app}/` com `latest.json` placeholder
2. Configurar endpoint em `tauri.conf.json`
3. Gerar Ed25519: `cargo tauri signer generate`
4. Adicionar secrets no GitHub: `TAURI_SIGNING_PRIVATE_KEY`, `GITEA_TOKEN`
5. Adicionar Formula em `apps/homebrew-tap` (macOS)
Auto-update manifests (latest.json) for RT Medical Tauri applications