Documenter la compilation et la publication dans le README

Ajoute les sections Compilation (dotnet build/test, publish
self-contained linux-x64) et Publication (script publier-release.sh
de mabibli_ynh, renvoi vers PUBLICATION.md pour la marche complète).
Corrige au passage la mention du scanner (ZXing.Net -> zbar), devenue
inexacte depuis la bascule documentée dans CLAUDE.md.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
LIMONIER Mathieu
2026-08-20 15:04:05 +02:00
co-authored by Copilot
parent a0cb727ff0
commit cf5ada8bab
+65 -2
View File
@@ -17,7 +17,7 @@ Gérer une bibliothèque personnelle (livres physiques et numériques), avec :
- **Langage** : C# / ASP.NET Core
- **Frontend** : Blazor WebAssembly, en **PWA** (installable, utilisable hors-ligne pour la consultation de la bibliothèque déjà enregistrée)
- **Scan code-barres** : **ZXing.Net** (décodage EAN-13 en C#, pas de bibliothèque JS tierce)
- **Scan code-barres** : **zbar** (WebAssembly, LGPL-2.1) — voir `CLAUDE.md` pour l'historique de la bascule depuis ZXing.Net
- **Accès** : smartphone (GSM) et PC, via navigateur
- **Multi-utilisateur** : géré via le SSO de **YunoHost** (en-têtes SSOwat, pas d'auth custom) — **collection commune** au foyer, avec traçabilité de qui a ajouté chaque livre
- **Base de données** : **SQLite**
@@ -25,6 +25,69 @@ Gérer une bibliothèque personnelle (livres physiques et numériques), avec :
- **Sources ISBN** : cascade **BnF (SRU) puis OpenLibrary** — bases libres, sans clé API, pas de dépendance à Google Books. La BnF passe en premier pour la couverture du fonds francophone. Voir `CLAUDE.md` pour le détail
- **Ebooks** : fiches d'inventaire uniquement, les fichiers ne sont pas hébergés par l'application
## Compilation
Prérequis : le SDK **.NET 10** (`dotnet --version`).
### En développement
```bash
dotnet build
dotnet test
```
Pour lancer l'application en local (l'API sert aussi le client Blazor compilé) :
```bash
dotnet run --project MaBibli.Api
```
### Publication self-contained (ce que le serveur reçoit réellement)
Le serveur YunoHost ne compile jamais : il télécharge une archive déjà publiée et la
déploie telle quelle (voir « Publication » ci-dessous). Pour produire ce même artefact
en local, à des fins de vérification :
```bash
dotnet publish MaBibli.Api --configuration Release --runtime linux-x64 --self-contained
```
`MaBibli.Api` référence `MaBibli.Client` : le client Blazor WebAssembly est compilé au
passage et atterrit dans `wwwroot/` du publish. Un seul projet à publier suffit donc
pour les trois (`MaBibli.Client`, `MaBibli.Shared`, `MaBibli.Api`). `--self-contained`
embarque le runtime .NET dans le dossier produit : aucun `dotnet-runtime` n'est requis
côté serveur.
⚠️ **Ne jamais compiler sur le serveur YunoHost lui-même** : ce serait imposer le SDK
complet à une machine qui n'en a pas besoin, pour une compilation lente. Voir
`CLAUDE.md`, section « Chaîne de publication ».
## Publication
MaBibli se publie et se déploie via un **second dépôt**, `mabibli_ynh` (le paquet
YunoHost), qui contient le script réutilisable `build/publier-release.sh` :
```bash
cd ../mabibli_ynh
./build/publier-release.sh
```
Ce script compile ce dépôt (`mabibli`) en `Release` self-contained, **vérifie** le
résultat (binaire présent, `wwwroot/` embarqué, toutes les ressources d'`index.html`
réellement sur disque, aucun placeholder d'empreinte non substitué), produit une
archive `.tar.gz` reproductible, calcule son `sha256`, et met à jour `version`,
`amd64.url` et `amd64.sha256` dans `mabibli_ynh/manifest.toml`.
Reste ensuite, à la main : créer le tag et la release Git correspondants sur ce dépôt,
y téléverser l'archive, puis committer et pousser `manifest.toml` dans `mabibli_ynh`
(YunoHost lit le manifeste **depuis Gitea**, jamais une copie locale).
**La marche à suivre complète et éprouvée** — première mise en production, montée de
version, retour arrière, désinstallation — est dans `mabibli_ynh/PUBLICATION.md`. Ne
pas la reproduire ici : ce sont des gestes propres au paquet YunoHost, pas au code de
ce dépôt.
## Statut
Projet en tout début de structuration. Voir `CLAUDE.md` pour le contexte complet à destination de Claude Code.
Voir `CLAUDE.md` pour le contexte complet et l'historique des décisions à destination
de Claude Code.