feat(desktop): manifeste de mise a jour latest.json + builds locaux signes (#77)
CI / lint (push) Successful in 1m7s
CI / security (push) Successful in 43s
CI / test (push) Successful in 2m12s
CI / build (push) Successful in 42s
CI / e2e (push) Successful in 10m43s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
CI / lint (push) Successful in 1m7s
CI / security (push) Successful in 43s
CI / test (push) Successful in 2m12s
CI / build (push) Successful in 42s
CI / e2e (push) Successful in 10m43s
Desktop Build / build-windows (push) Canceled after 0s
Desktop Build / build-linux (push) Canceled after 0s
- scripts/updater_manifest.py : construit latest.json (version, pub_date, platforms Windows/Linux avec signature .sig et URLs des assets). - publish_release.py : genere latest.json, upload des .sig + latest.json, rappel de commit. - tauri.conf.json : endpoint updater -> raw/branch/main/desktop/latest.json. - build-windows.bat / build-linux.sh : detection automatique de obsigate-updater.key (signature) ou repli non signe. - .gitignore : ignore desktop/key/ ; tests/test_updater_manifest.py (8 tests).
This commit is contained in:
@@ -121,8 +121,30 @@ les fichiers `.sig` sont uploadés comme artefacts.
|
||||
### D. Manifeste de mise à jour (`latest.json`)
|
||||
|
||||
Le CLI Tauri génère les `.sig` mais **pas** le manifeste JSON consommé par
|
||||
l'updater. L'endpoint configuré
|
||||
(`.../releases/latest`) doit servir un document de la forme :
|
||||
l'updater. Celui-ci est produit par `scripts/updater_manifest.py` :
|
||||
|
||||
```powershell
|
||||
# Windows — après build-windows.bat
|
||||
.\.venv\Scripts\python.exe scripts\updater_manifest.py --tag v2.3.0
|
||||
```
|
||||
|
||||
`publish_release.py` l'appelle automatiquement : il écrit `desktop/latest.json`,
|
||||
l'ajoute aux assets de la release, et rappelle la dernière étape manuelle.
|
||||
|
||||
**Flux complet de release :**
|
||||
|
||||
1. `desktop\build-windows.bat` (build + signature `.sig`) ;
|
||||
2. `python scripts\publish_release.py --tag vX.Y.Z` (checksums + `latest.json` + upload) ;
|
||||
3. **commit** de `desktop/latest.json` sur `main` puis `git push`.
|
||||
|
||||
L'endpoint de l'updater (`desktop/tauri.conf.json`) pointe vers ce fichier
|
||||
versionné :
|
||||
|
||||
```
|
||||
https://git.dracodev.net/Projets/ObsiGate/raw/branch/main/desktop/latest.json
|
||||
```
|
||||
|
||||
Document produit (URLs construites vers les assets de la release) :
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -130,14 +152,15 @@ l'updater. L'endpoint configuré
|
||||
"notes": "…",
|
||||
"pub_date": "2026-09-12T00:00:00Z",
|
||||
"platforms": {
|
||||
"windows-x86_64": { "signature": "<contenu .msi.sig>", "url": "<URL du .msi>" },
|
||||
"windows-x86_64": { "signature": "<contenu .exe.sig>", "url": "<URL du .exe>" },
|
||||
"linux-x86_64": { "signature": "<contenu .AppImage.sig>", "url": "<URL .AppImage>" }
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Sans ce manifeste, l'updater ne détecte aucune mise à jour (la signature, elle,
|
||||
est déjà opérationnelle).
|
||||
> Seules les plateformes dont l'artefact **signé** est présent sont incluses.
|
||||
> Sans `desktop/latest.json` à jour sur `main`, l'updater ne détecte aucune
|
||||
> mise à jour (la signature, elle, reste opérationnelle).
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user