From 33bab173bc69d770a8e8f62e2f14d051ac13751a Mon Sep 17 00:00:00 2001 From: mathieu Date: Tue, 18 Aug 2026 19:16:13 +0200 Subject: [PATCH] =?UTF-8?q?Pointer=20r=C3=A9ellement=20le=20manifeste=20ve?= =?UTF-8?q?rs=20la=20release=20Gitea?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le commit précédent portait le bon message mais pas les modifications : manifest.toml, README.md, conf/systemd.service et la valeur par défaut de --base-url référençaient encore gitea.example.org, ce qui faisait échouer l'installation au Prefetching asset main. A_FAIRE.md est réécrit : la visibilité privée du dépôt du code devient le point bloquant restant (Gitea répond 404, pas 403, à un anonyme). Co-Authored-By: Claude Opus 5 --- A_FAIRE.md | 136 ++++++++++++++++++++++++++++----------- README.md | 2 +- build/publier-release.sh | 2 +- conf/systemd.service | 2 +- manifest.toml | 6 +- 5 files changed, 103 insertions(+), 45 deletions(-) diff --git a/A_FAIRE.md b/A_FAIRE.md index 8df2d29..0db1d31 100644 --- a/A_FAIRE.md +++ b/A_FAIRE.md @@ -1,68 +1,101 @@ # À faire avant la première installation -Deux points restés en suspens à la livraison du paquet, à traiter quand tu voudras -déployer. Rien ici n'est bloqué par le code : tout fonctionne, il manque des -informations que seul toi peux fournir. +État au 2026-08-18. Ce qui est fait est conservé en bas de page : le savoir *pourquoi* +c'était à faire reste utile à la prochaine version. --- -## 1. Remplacer l'URL de démonstration et déposer la release +## 1. Rendre le dépôt du code accessible sans authentification — BLOQUANT -Le `manifest.toml` porte une URL **fictive** (`gitea.example.org`) : le paquet ne -pouvait pas connaître ton vrai domaine Gitea au moment de sa création. En l'état, -l'installation échouerait au téléchargement de l'archive. +`ynh_setup_source` télécharge l'archive **sans jeton**. Tant que le dépôt `mabibli` +est privé, l'installation échoue au téléchargement. + +### Le symptôme, et pourquoi il induit en erreur + +Constaté le 2026-08-18, sans authentification : + +``` +/mathieu/mabibli → 404 +/mathieu/mabibli/releases → 404 +/api/v1/repos/mathieu/mabibli → 404 +``` + +Gitea répond **404 et non 403** à un visiteur anonyme sur un dépôt privé, pour ne pas +révéler son existence. Le symptôme est donc **exactement le même** que « la release +n'a pas été créée » ou « le fichier n'a pas été téléversé ». Ne pas chercher du côté +de la release avant d'avoir réglé la visibilité : les deux causes sont indiscernables. + +Que le dépôt existe bien est vérifiable autrement, par SSH (clé, donc authentifié) : + +``` +git ls-remote --tags origin +``` ### Ce qu'il faut faire -**a. Créer la release du code.** Sur le dépôt `mabibli` (celui du code C#, pas -celui-ci) : +Dans Gitea, sur le dépôt `mathieu/mabibli` : *Settings → Danger Zone → Make +repository public*. Le code est déjà sous AGPL-3.0-or-later, la publication est +cohérente avec la licence. + +Si le dépôt doit rester privé, il faut héberger l'archive ailleurs, sur une URL +publique, et faire pointer `--base-url` dessus. Un jeton dans l'URL du manifeste +serait à écarter : le manifeste est lu par YunoHost et lisible sur le serveur. + +--- + +## 2. Créer la release et y téléverser l'archive + +À faire (ou à vérifier — voir point 1, tant que le dépôt est privé on ne peut pas +savoir si c'est déjà fait). + +Le tag est déjà poussé : `v0.1.0` → `922fd02`. Reste à créer la release +correspondante dans l'interface Gitea et à y téléverser : ``` -git tag v0.1.0 -git push origin v0.1.0 +build/dist/mabibli-0.1.0-linux-x64.tar.gz ``` -Puis créer la release correspondante dans l'interface Gitea et y téléverser -l'archive `build/dist/mabibli-0.1.0-linux-x64.tar.gz`. +⚠️ **L'archive à téléverser est celle produite le 2026-08-18**, `sha256` +`e3316bd05cd71234403695bab405f48009d8d6186b0074235396d622c8c0caef`. Une archive plus +ancienne traînant sur le disque ne correspondrait plus au manifeste, et +l'installation s'interromprait à la vérification d'intégrité — comportement voulu, +mais autant ne pas s'y heurter. -⚠️ L'archive fait **68 Mo** — c'est normal, le publish est *self-contained* et -embarque le runtime .NET. C'est précisément ce qui évite d'installer -`dotnet-runtime` sur le serveur YunoHost. - -**b. Régénérer le manifeste avec la vraie URL :** - -``` -./build/publier-release.sh --base-url -``` - -Le script recompile, produit l'archive, calcule son `sha256` et l'inscrit dans le -`manifest.toml` avec la bonne URL. Committer ensuite le manifeste modifié. - -**c. Chercher les autres occurrences du domaine fictif**, qui ne sont pas couvertes -par le script : - -``` -grep -rn "gitea.example.org" . -``` - -Elles se trouvent dans `manifest.toml` (champ `upstream.code`), `README.md`, et -`conf/systemd.service` (directive `Documentation=`). +⚠️ Elle fait **69 Mo** : c'est normal, le publish est *self-contained* et embarque le +runtime .NET. C'est précisément ce qui évite d'installer `dotnet-runtime` sur le +serveur YunoHost. ### Comment vérifier -Le `sha256` du manifeste doit correspondre à l'archive réellement déposée : +``` +curl -fsSLI "https://git.akbar.nohost.me/mathieu/mabibli/releases/download/v0.1.0/mabibli-0.1.0-linux-x64.tar.gz" | head -1 +``` + +Doit répondre `HTTP/2 200`, **sans être connecté**. Et le `sha256` du manifeste doit +correspondre à l'archive réellement déposée : ``` sha256sum build/dist/mabibli-0.1.0-linux-x64.tar.gz grep sha256 manifest.toml ``` -S'ils diffèrent, l'installation s'interrompra à la vérification d'intégrité — ce qui -est le comportement souhaité, mais autant le savoir avant. +--- + +## 3. Committer et pousser le paquet + +Le manifeste corrigé n'est pas encore poussé. `yunohost app install ` +lit le manifeste **depuis Gitea**, pas depuis la copie locale : sans ce push, +l'installation repartira sur l'ancienne URL fictive. + +``` +git add -A && git commit && git push +``` --- -## 2. L'application exige un domaine entier, pas un sous-chemin +# Contrainte permanente — ce n'est pas une tâche + +## L'application exige un domaine entier, pas un sous-chemin **Contrainte technique, pas un choix.** MaBibli doit être installée sur `mabibli.mondomaine.tld`, et **non** sur `mondomaine.tld/mabibli`. @@ -89,3 +122,28 @@ demandera un domaine dédié à l'installation. Il faudrait produire une archive **par chemin d'installation**, ou recompiler sur le serveur. Les deux annulent le bénéfice du self-contained. À moins d'un besoin réel, un sous-domaine reste la bonne réponse. + +--- + +# Fait + +## L'URL de démonstration a été remplacée — 2026-08-18 + +Le `manifest.toml` portait une URL **fictive** (`gitea.example.org`) : le paquet ne +pouvait pas connaître le vrai domaine Gitea au moment de sa création. Constaté en +conditions réelles — l'installation s'arrête net au `Prefetching asset main`. + +Corrigé par `./build/publier-release.sh`, qui recompile, vérifie le publish, produit +l'archive, calcule son `sha256` et l'inscrit dans le manifeste avec la bonne URL. +`https://git.akbar.nohost.me/mathieu/mabibli/releases/download` est désormais la +valeur **par défaut** de `--base-url` dans le script : l'option n'est plus à passer. + +Les occurrences hors manifeste, que le script ne touche pas, ont été traitées à la +main : `README.md` et `conf/systemd.service` (directive `Documentation=`). Le +contrôle reste `grep -rn "gitea.example.org" .` — il ne doit plus rien remonter que +ce fichier-ci. + +## L'archive ne va plus dans git — 2026-08-18 + +`build/dist/` est ignoré. L'archive vit dans la release Gitea ; committée, elle +ajouterait 69 Mo d'historique **par version**, définitivement. diff --git a/README.md b/README.md index 641a88c..557d151 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Paquet YunoHost pour MaBibli -Paquet d'installation de [MaBibli](https://gitea.example.org/mathieu/mabibli), application de +Paquet d'installation de [MaBibli](https://git.akbar.nohost.me/mathieu/mabibli), application de gestion de bibliothèque personnelle (catalogue, prêts, scan ISBN). Ce dépôt **ne contient aucun code C#**. Il porte uniquement de quoi installer sur YunoHost une diff --git a/build/publier-release.sh b/build/publier-release.sh index babaf2f..7e280d4 100755 --- a/build/publier-release.sh +++ b/build/publier-release.sh @@ -28,7 +28,7 @@ racine_paquet="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" source_dir="${MABIBLI_SOURCE_DIR:-$(cd "$racine_paquet/../mabibli" 2>/dev/null && pwd || true)}" version="${MABIBLI_VERSION:-}" -base_url="${MABIBLI_BASE_URL:-https://gitea.example.org/mathieu/mabibli/releases/download}" +base_url="${MABIBLI_BASE_URL:-https://git.akbar.nohost.me/mathieu/mabibli/releases/download}" output_dir="${MABIBLI_OUTPUT_DIR:-$racine_paquet/build/dist}" maj_manifeste=1 runtime="linux-x64" diff --git a/conf/systemd.service b/conf/systemd.service index 1f64807..bb7c2db 100644 --- a/conf/systemd.service +++ b/conf/systemd.service @@ -1,6 +1,6 @@ [Unit] Description=MaBibli — gestion de bibliothèque personnelle -Documentation=https://gitea.example.org/mathieu/mabibli +Documentation=https://git.akbar.nohost.me/mathieu/mabibli After=network.target [Service] diff --git a/manifest.toml b/manifest.toml index 4126eb9..eed5531 100644 --- a/manifest.toml +++ b/manifest.toml @@ -13,7 +13,7 @@ maintainers = ["mathieu"] [upstream] license = "AGPL-3.0-or-later" -code = "https://gitea.example.org/mathieu/mabibli" +code = "https://git.akbar.nohost.me/mathieu/mabibli" [integration] yunohost = ">= 12.1.38" @@ -73,8 +73,8 @@ ram.runtime = "200M" # self-contained (CLAUDE.md, « Ne jamais compiler sur le serveur »). # # Ces deux valeurs sont réécrites par `build/publier-release.sh`. - amd64.url = "https://gitea.example.org/mathieu/mabibli/releases/download/v0.1.0/mabibli-0.1.0-linux-x64.tar.gz" - amd64.sha256 = "a202f59b4d55aac172d78defd7733bee30d8a115d899ed0da55cd935f6bf679d" + amd64.url = "https://git.akbar.nohost.me/mathieu/mabibli/releases/download/v0.1.0/mabibli-0.1.0-linux-x64.tar.gz" + amd64.sha256 = "e3316bd05cd71234403695bab405f48009d8d6186b0074235396d622c8c0caef" # L'archive dépose ses fichiers à la racine, sans dossier intermédiaire. in_subdir = false