Documente qu'il n'y a plus qu'un script, et pourquoi il refuse

La chaîne de publication n'a plus qu'un point d'entrée. README.md décrit
`publier.sh` seul, ses deux refus (tag déjà pris, dépôt du code sale) et
le mode `--archive-seule` pour la marche à pied ; CLAUDE.md acte la fusion
et ce qu'elle empêche de refaire.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
mathieu
2026-08-21 23:12:52 +02:00
co-authored by Claude Opus 5
parent 323b50676b
commit 63bf6be3e1
2 changed files with 91 additions and 27 deletions
+35 -4
View File
@@ -1934,15 +1934,18 @@ appris, pas ce qu'on en attendait.
### La chaîne, telle qu'elle tourne
```
publier-release.sh → archive tar.gz (69 Mo, self-contained) → release Gitea
→ manifest.toml (amd64.url + amd64.sha256)
→ yunohost app install <url du dépôt _ynh>
publier.sh → archive tar.gz (69 Mo, self-contained) → release Gitea
→ manifest.toml (amd64.url + amd64.sha256) → commit + push
→ tag v<version> + push → yunohost app upgrade
```
Le script est la seule source des trois valeurs qui doivent rester cohérentes :
version, URL, sha256. ⚠️ Il ne réécrit **que** `manifest.toml` — les autres mentions
de l'URL (`README.md`, `Documentation=` de l'unité systemd) sont à traiter à la main.
⚠️ **Il n'y a qu'UN script, depuis le 2026-08-21 — voir « Un seul script de
publication » ci-dessous.** Ne pas réintroduire d'étape appelable séparément.
⚠️ **Le dépôt du code doit être public.** `ynh_setup_source` télécharge sans jeton.
Gitea répond **404 et non 403** à un anonyme sur un dépôt privé : le symptôme est
rigoureusement identique à « la release n'existe pas », ce qui envoie chercher au
@@ -1952,6 +1955,34 @@ mauvais endroit. Contrôle qui tranche, hors session authentifiée :
⚠️ **YunoHost lit le manifeste depuis Gitea**, jamais la copie locale. Une correction
non poussée est une correction qui n'existe pas — constaté deux fois.
### Un seul script de publication — fusion du 2026-08-21
Il y en avait deux : `publier.sh` (l'enchaînement complet) et `publier-release.sh`
(compiler, archiver, réécrire le manifeste). ⚠️ **Le mauvais des deux portait le nom le
plus convaincant** — « publier-release » sonne plus précis que « publier », et les deux
se ressemblent dans la complétion du shell.
Lancé seul, il produisait les **deux moitiés** de la panne constatée ce jour-là :
| Ce qu'il faisait | Conséquence |
|---|---|
| réécrire `manifest.toml` **sans committer** | `yunohost app upgrade` échoue sur le sha256 — et son **retour arrière échoue pour la même raison**, puisqu'il retélécharge la même source |
| accepter de recompiler une version dont le **tag existe déjà** | la release `v0.4.0` contenait en réalité **six commits de plus** que son tag, donc une application qui se déclare « 0.4.0 » sans l'être |
Le second est le plus grave, et le plus silencieux : rien ne le signale, et c'est
précisément le numéro qu'on ira chercher dans « À propos » pour diagnostiquer un
appareil dépareillé (voir le lot Y). **Une release qui ment sur son contenu ruine le
seul repère dont on dispose.**
Les deux scripts sont fondus dans `build/publier.sh`, qui refuse maintenant de publier
**avant de compiler** si le tag existe déjà (en nommant le commit du tag et celui de
HEAD) ou si le dépôt du code a des modifications non committées.
⚠️ Le mode `--archive-seule` conserve la brique réutilisable en CI, mais **sous le même
nom** : il compile et archive sans toucher ni au manifeste ni à git, donc il ne peut
rien laisser à moitié publié. Ne pas recréer de second script — c'est la coexistence de
deux commandes voisines qui était le défaut, pas leur contenu.
### Deux pièges systemd, tous deux invisibles hors d'un vrai serveur
Ni l'un ni l'autre ne peut sortir d'un `dotnet run` ou d'un lancement du publish à la
@@ -3016,7 +3047,7 @@ utilisateurs d'un service en réseau puissent en obtenir la source** : ce lien n
ornement, c'est ce que la licence demande.
L'application ne connaissait pas sa version : elle vivait dans le `manifest.toml` du dépôt
`mabibli_ynh` et dans les tags git, **jamais dans le binaire**. `build/publier-release.sh` pose
`mabibli_ynh` et dans les tags git, **jamais dans le binaire**. `build/publier.sh` pose
désormais `-p:Version` et `-p:MaBibliDateBuild` (en respectant `SOURCE_DATE_EPOCH`), et l'API rend
les deux par `GET /api/version`.