From 5558c206a0f5031c24c7d557f55de987021806f0 Mon Sep 17 00:00:00 2001 From: Gato Date: Sun, 26 Jul 2026 21:59:37 +0200 Subject: [PATCH] =?UTF-8?q?fix(luz):=20les=20stacks=20suivent=20le=20tag?= =?UTF-8?q?=20:main,=20publi=C3=A9=20par=20la=20CI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La prod servait encore a70e0e4 (25/07) alors que main en etait a 79 commits plus loin : les stacks luz et dev-luz epinglaient « :develop », un tag que la CI de l'app ne pousse plus depuis qu'elle ne se declenche que sur main (images.yml publie sha-, main et latest). Rien ne le signalait : Watchtower repondait bien 200 a /v1/update, ne trouvait aucune image plus recente pour « :develop » et ne recreait donc rien. Seule la verification post-deploiement de la CI a fini par le dire. Les quatre images (backend + webapp, prod et dev-luz) visent desormais « :main ». Les en-tetes des deux stacks rappellent que ce tag doit rester celui que publie images.yml, changer l'un imposant de changer l'autre. Co-Authored-By: Claude Opus 5 (1M context) --- dev-luz/docker-compose.yml | 10 +++++++--- luz/docker-compose.yml | 27 ++++++++++++++++++--------- watchtower/docker-compose.yml | 2 +- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/dev-luz/docker-compose.yml b/dev-luz/docker-compose.yml index 7c52dba..791e82b 100644 --- a/dev-luz/docker-compose.yml +++ b/dev-luz/docker-compose.yml @@ -4,12 +4,16 @@ # Backend : https://dev-luz.goutailler-olivier.com/api → backend Spring (:8080) # # Déploiement AUTOMATIQUE : la CI Gitea (client/app/.gitea/workflows/images.yml) -# builde et pousse les images « …/luz/luz-*:develop » à chaque push sur develop, +# builde et pousse les images « …/luz/luz-*:main » à chaque push sur main, # puis appelle l'API HTTP de Watchtower. Watchtower (../watchtower/) ne surveille # que les conteneurs portant le label watchtower.enable=true (posé ci-dessous) : # il tire la nouvelle image et recrée le conteneur. Plus de transfert SSH ni de # « deploy.sh » pour cette stack de test. # +# ⚠️ La CI ne publie plus « :develop » (elle ne se déclenche que sur main) : une +# stack restée sur ce tag ne reçoit plus jamais de mise à jour, en silence. Le tag +# suivi ici doit toujours être celui que publie images.yml — cf. ../luz/. +# # Prérequis : le serveur (root) doit être « docker login git.goutailler-olivier.com » # une fois, sinon Watchtower ne peut pas tirer les images privées de l'org luz. # @@ -41,7 +45,7 @@ services: - dev-luz-net backend: - image: git.goutailler-olivier.com/luz/luz-backend:develop + image: git.goutailler-olivier.com/luz/luz-backend:main container_name: dev-luz-backend restart: unless-stopped depends_on: @@ -69,7 +73,7 @@ services: - traefik.docker.network=proxy webapp: - image: git.goutailler-olivier.com/luz/luz-webapp:develop + image: git.goutailler-olivier.com/luz/luz-webapp:main container_name: dev-luz-webapp restart: unless-stopped depends_on: diff --git a/luz/docker-compose.yml b/luz/docker-compose.yml index d15df58..04d9853 100644 --- a/luz/docker-compose.yml +++ b/luz/docker-compose.yml @@ -3,15 +3,24 @@ # Frontend : https://luz.goutailler-olivier.com → webapp (nginx :80) # Backend : https://luz.goutailler-olivier.com/api → backend Spring (:8080) # -# Images tirées du registre Gitea (git.goutailler-olivier.com/luz/luz-*:develop), -# publiées par la CI (client/app/.gitea/workflows/images.yml) à chaque push « develop » -# (l'app n'a pas de branche « main »). Prod et dev-luz partagent donc la MÊME image ; -# ce qui les sépare : ici la base est PERSISTANTE et sans profil « dev » (voir plus bas), -# côté dev-luz elle est réinitialisée à chaque démarrage. Le redéploiement est -# automatique : les conteneurs portent le label watchtower.enable=true, donc chaque -# push develop fait recréer AUSSI cette prod par Watchtower (../watchtower/), en même +# Images tirées du registre Gitea (git.goutailler-olivier.com/luz/luz-*:main), +# publiées par la CI (client/app/.gitea/workflows/images.yml) à chaque push « main » +# — c'est-à-dire à chaque mise en production. Prod et dev-luz partagent donc la MÊME +# image ; ce qui les sépare : ici la base est PERSISTANTE et sans profil « dev » (voir +# plus bas), côté dev-luz elle est réinitialisée à chaque démarrage. Le redéploiement +# est automatique : les conteneurs portent le label watchtower.enable=true, donc chaque +# push main fait recréer AUSSI cette prod par Watchtower (../watchtower/), en même # temps que dev-luz. Plus de transfert SSH ni de deploy.sh. # +# ⚠️ Le tag suivi ici doit rester celui que la CI publie. L'app a d'abord publié +# « :develop » (elle n'avait pas de branche main), puis est passée à « :main ». Ces +# stacks étant restées sur « :develop », plus rien n'a poussé ce tag : Watchtower +# répondait 200 à /v1/update mais ne trouvait aucune image plus récente, et la prod +# est restée figée sur le dernier build develop (a70e0e4, 25/07) pendant que main +# avançait de 79 commits — sans la moindre erreur visible côté CI hors la +# vérification post-déploiement. Changer le tag de publication dans images.yml +# impose donc de changer ce tag ici, dans le même mouvement. +# # Prérequis : le serveur (root) doit être « docker login git.goutailler-olivier.com » # une fois, sinon Watchtower ne peut pas tirer les images privées de l'org luz. # @@ -43,7 +52,7 @@ services: - luz-net backend: - image: git.goutailler-olivier.com/luz/luz-backend:develop + image: git.goutailler-olivier.com/luz/luz-backend:main container_name: luz-backend restart: unless-stopped depends_on: @@ -70,7 +79,7 @@ services: - traefik.docker.network=proxy webapp: - image: git.goutailler-olivier.com/luz/luz-webapp:develop + image: git.goutailler-olivier.com/luz/luz-webapp:main container_name: luz-webapp restart: unless-stopped depends_on: diff --git a/watchtower/docker-compose.yml b/watchtower/docker-compose.yml index cd335b3..24f6e23 100644 --- a/watchtower/docker-compose.yml +++ b/watchtower/docker-compose.yml @@ -13,7 +13,7 @@ services: WATCHTOWER_LABEL_ENABLE: "true" WATCHTOWER_CLEANUP: "true" # Identifiants de pull du registre Gitea privé (git.goutailler-olivier.com). - # Sans eux, Watchtower échoue à tirer luz-backend/luz-webapp :develop + # Sans eux, Watchtower échoue à tirer luz-backend/luz-webapp :main # (« unauthorized: reqPackageAccess ») et ne recrée jamais les conteneurs # — le déploiement reste bloqué en silence (Updated=0, mais /v1/update → 200). # Un PAT en LECTURE seule (scope read:package) sur l'org Luz suffit. -- 2.52.0