Merge pull request 'La prod suit à nouveau les images publiées : les stacks passent au tag :main' (#1) from fix/stacks-luz-suivent-le-tag-main into main
Reviewed-on: #1
This commit was merged in pull request #1.
This commit is contained in:
@@ -4,12 +4,16 @@
|
|||||||
# Backend : https://dev-luz.goutailler-olivier.com/api → backend Spring (:8080)
|
# Backend : https://dev-luz.goutailler-olivier.com/api → backend Spring (:8080)
|
||||||
#
|
#
|
||||||
# Déploiement AUTOMATIQUE : la CI Gitea (client/app/.gitea/workflows/images.yml)
|
# 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
|
# puis appelle l'API HTTP de Watchtower. Watchtower (../watchtower/) ne surveille
|
||||||
# que les conteneurs portant le label watchtower.enable=true (posé ci-dessous) :
|
# 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
|
# il tire la nouvelle image et recrée le conteneur. Plus de transfert SSH ni de
|
||||||
# « deploy.sh » pour cette stack de test.
|
# « 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 »
|
# 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.
|
# une fois, sinon Watchtower ne peut pas tirer les images privées de l'org luz.
|
||||||
#
|
#
|
||||||
@@ -41,7 +45,7 @@ services:
|
|||||||
- dev-luz-net
|
- dev-luz-net
|
||||||
|
|
||||||
backend:
|
backend:
|
||||||
image: git.goutailler-olivier.com/luz/luz-backend:develop
|
image: git.goutailler-olivier.com/luz/luz-backend:main
|
||||||
container_name: dev-luz-backend
|
container_name: dev-luz-backend
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
@@ -69,7 +73,7 @@ services:
|
|||||||
- traefik.docker.network=proxy
|
- traefik.docker.network=proxy
|
||||||
|
|
||||||
webapp:
|
webapp:
|
||||||
image: git.goutailler-olivier.com/luz/luz-webapp:develop
|
image: git.goutailler-olivier.com/luz/luz-webapp:main
|
||||||
container_name: dev-luz-webapp
|
container_name: dev-luz-webapp
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|||||||
+18
-9
@@ -3,15 +3,24 @@
|
|||||||
# Frontend : https://luz.goutailler-olivier.com → webapp (nginx :80)
|
# Frontend : https://luz.goutailler-olivier.com → webapp (nginx :80)
|
||||||
# Backend : https://luz.goutailler-olivier.com/api → backend Spring (:8080)
|
# Backend : https://luz.goutailler-olivier.com/api → backend Spring (:8080)
|
||||||
#
|
#
|
||||||
# Images tirées du registre Gitea (git.goutailler-olivier.com/luz/luz-*:develop),
|
# 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 « develop »
|
# publiées par la CI (client/app/.gitea/workflows/images.yml) à chaque push « main »
|
||||||
# (l'app n'a pas de branche « main »). Prod et dev-luz partagent donc la MÊME image ;
|
# — c'est-à-dire à chaque mise en production. Prod et dev-luz partagent donc la MÊME
|
||||||
# ce qui les sépare : ici la base est PERSISTANTE et sans profil « dev » (voir plus bas),
|
# image ; ce qui les sépare : ici la base est PERSISTANTE et sans profil « dev » (voir
|
||||||
# côté dev-luz elle est réinitialisée à chaque démarrage. Le redéploiement est
|
# plus bas), côté dev-luz elle est réinitialisée à chaque démarrage. Le redéploiement
|
||||||
# automatique : les conteneurs portent le label watchtower.enable=true, donc chaque
|
# 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
|
# 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.
|
# 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 »
|
# 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.
|
# une fois, sinon Watchtower ne peut pas tirer les images privées de l'org luz.
|
||||||
#
|
#
|
||||||
@@ -43,7 +52,7 @@ services:
|
|||||||
- luz-net
|
- luz-net
|
||||||
|
|
||||||
backend:
|
backend:
|
||||||
image: git.goutailler-olivier.com/luz/luz-backend:develop
|
image: git.goutailler-olivier.com/luz/luz-backend:main
|
||||||
container_name: luz-backend
|
container_name: luz-backend
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
@@ -70,7 +79,7 @@ services:
|
|||||||
- traefik.docker.network=proxy
|
- traefik.docker.network=proxy
|
||||||
|
|
||||||
webapp:
|
webapp:
|
||||||
image: git.goutailler-olivier.com/luz/luz-webapp:develop
|
image: git.goutailler-olivier.com/luz/luz-webapp:main
|
||||||
container_name: luz-webapp
|
container_name: luz-webapp
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ services:
|
|||||||
WATCHTOWER_LABEL_ENABLE: "true"
|
WATCHTOWER_LABEL_ENABLE: "true"
|
||||||
WATCHTOWER_CLEANUP: "true"
|
WATCHTOWER_CLEANUP: "true"
|
||||||
# Identifiants de pull du registre Gitea privé (git.goutailler-olivier.com).
|
# 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
|
# (« unauthorized: reqPackageAccess ») et ne recrée jamais les conteneurs
|
||||||
# — le déploiement reste bloqué en silence (Updated=0, mais /v1/update → 200).
|
# — 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.
|
# Un PAT en LECTURE seule (scope read:package) sur l'org Luz suffit.
|
||||||
|
|||||||
Reference in New Issue
Block a user