From 465b384c08999f0f5062632d4178f00b29ac65d0 Mon Sep 17 00:00:00 2001 From: oversu <95a7002b-481b-4ef3-b578-f9c421550aa4@localhost> Date: Tue, 8 Sep 2026 20:15:08 +0200 Subject: [PATCH] Adapte le canal aux versions candidates --- CHANGELOG.md | 1 + app/Services/UpdateService.php | 3 ++- docs/mises-a-jour.md | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3232696..03dcc02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ Toutes les modifications importantes du projet sont consignées ici. Le format s - ajout d’un centre de mises à jour pour les installations hors YunoHost ; - détection directe des releases stables publiées sur le dépôt Forgejo configurable ; +- suivi des préversions uniquement depuis une installation elle-même candidate ou explicitement configurée ; - vérification SHA-256 obligatoire des archives téléchargées ou téléversées ; - sauvegarde complète vérifiée et copie du code avant chaque installation ; - restauration automatique du code et des données lorsqu’une migration ou un contrôle échoue ; diff --git a/app/Services/UpdateService.php b/app/Services/UpdateService.php index 1137697..fa7f728 100644 --- a/app/Services/UpdateService.php +++ b/app/Services/UpdateService.php @@ -234,8 +234,9 @@ final class UpdateService if (!is_array($releases)) { throw new RuntimeException(t('updates.release_invalid')); } + $acceptPrereleases = str_contains(self::currentVersion(), '-') || getenv('GLOBINOURS_RELEASES_PRERELEASES') === '1'; foreach ($releases as $release) { - if (!is_array($release) || !empty($release['draft']) || !empty($release['prerelease'])) { + if (!is_array($release) || !empty($release['draft']) || (!empty($release['prerelease']) && !$acceptPrereleases)) { continue; } $version = ltrim(trim((string) ($release['tag_name'] ?? '')), 'vV'); diff --git a/docs/mises-a-jour.md b/docs/mises-a-jour.md index 64970db..980cdb4 100644 --- a/docs/mises-a-jour.md +++ b/docs/mises-a-jour.md @@ -23,7 +23,7 @@ Le fichier `SHA256SUMS` contient l’empreinte de l’archive : 0f00000000000000000000000000000000000000000000000000000000000000 globinours-1.0.1.tar.gz ``` -Un fichier nommé `globinours-1.0.1.tar.gz.sha256` peut remplacer `SHA256SUMS`. Les brouillons et préversions Forgejo sont ignorés par le canal stable. +Un fichier nommé `globinours-1.0.1.tar.gz.sha256` peut remplacer `SHA256SUMS`. Les brouillons sont toujours ignorés. Une installation candidate accepte les releases marquées comme préversions ; une installation stable les ignore. Un technicien peut exceptionnellement les autoriser avec `GLOBINOURS_RELEASES_PRERELEASES=1`. L’archive doit contenir un fichier `VERSION`, le dossier `app`, le dossier `migrations` et `public/index.php`, directement ou sous un unique dossier parent. Les dossiers `.env`, `data`, `storage` et `public/media` éventuellement présents sont toujours ignorés.