Compare commits

..

3 Commits

Author SHA1 Message Date
bf871852b8 Mise à jour de l'orchestrateur
Some checks failed
E2E Tests / e2e (push) Failing after 2m31s
2026-06-14 17:18:48 +02:00
78e735c959 Mise à jour de la partie watchtower ; pas nécéssaire tout le temps
Some checks are pending
E2E Tests / e2e (push) Waiting to run
2026-06-14 16:51:46 +02:00
c734de447f Merge branch 'beta'
Some checks failed
E2E Tests / e2e (push) Failing after 24s
Build & Push Images / build (brain) (push) Successful in 1m42s
Build & Push Images / build (core) (push) Successful in 1m52s
Build & Push Images / build-switcher (push) Successful in 53s
Build & Push Images / build (web) (push) Successful in 2m0s
2026-06-14 16:32:51 +02:00
4 changed files with 19 additions and 6 deletions

View File

@@ -1,7 +1,10 @@
# Copie en .env sur le serveur (jamais commite). # Copie en .env sur le serveur (jamais commite).
# Registre et tag des images core / brain a spawner par session. # Registre, namespace et tag des images core / brain a spawner par session.
REGISTRY=git.igmlcreation.fr # Doit pointer sur le registre ou la CI publie reellement (ghcr.io).
# Le slash final de IMAGE_NAMESPACE est important : image = REGISTRY/NAMESPACEcore:TAG
REGISTRY=ghcr.io
IMAGE_NAMESPACE=igmlcreation/loremind-
TAG=latest TAG=latest
# Secret partage entre core et brain (genere aleatoirement au build de chaque # Secret partage entre core et brain (genere aleatoirement au build de chaque

View File

@@ -10,6 +10,7 @@ import (
// Config centralise les parametres lus depuis les variables d'env au boot. // Config centralise les parametres lus depuis les variables d'env au boot.
type Config struct { type Config struct {
Registry string Registry string
Namespace string
Tag string Tag string
MaxSessions int MaxSessions int
SessionTTL time.Duration SessionTTL time.Duration
@@ -27,7 +28,12 @@ type Config struct {
func loadConfig() *Config { func loadConfig() *Config {
return &Config{ return &Config{
Registry: envStr("REGISTRY", "git.igmlcreation.fr"), // Aligne sur la nouvelle convention de publication des images
// (ghcr.io/igmlcreation/loremind-{core,brain}). L'ancien registre Gitea
// (git.igmlcreation.fr/ietm64/*) n'est plus republie : il restait gele
// sur une vieille version. Le slash final de Namespace est volontaire.
Registry: envStr("REGISTRY", "ghcr.io"),
Namespace: envStr("IMAGE_NAMESPACE", "igmlcreation/loremind-"),
Tag: envStr("TAG", "latest"), Tag: envStr("TAG", "latest"),
MaxSessions: envInt("MAX_SESSIONS", 10), MaxSessions: envInt("MAX_SESSIONS", 10),
SessionTTL: time.Duration(envInt("SESSION_TTL_MINUTES", 20)) * time.Minute, SessionTTL: time.Duration(envInt("SESSION_TTL_MINUTES", 20)) * time.Minute,

View File

@@ -111,7 +111,7 @@ func (d *DockerClient) SpawnTrio(ctx context.Context, sessionID string, cfg *Con
if err := d.runContainer(ctx, runSpec{ if err := d.runContainer(ctx, runSpec{
Name: brainName, Name: brainName,
Image: cfg.Registry + "/ietm64/brain:" + cfg.Tag, Image: cfg.Registry + "/" + cfg.Namespace + "brain:" + cfg.Tag,
Env: []string{ Env: []string{
"INTERNAL_SHARED_SECRET=" + brainSecret, "INTERNAL_SHARED_SECRET=" + brainSecret,
// Pas de provider LLM configure en demo : les features IA echoueront // Pas de provider LLM configure en demo : les features IA echoueront
@@ -129,7 +129,7 @@ func (d *DockerClient) SpawnTrio(ctx context.Context, sessionID string, cfg *Con
if err := d.runContainer(ctx, runSpec{ if err := d.runContainer(ctx, runSpec{
Name: coreName, Name: coreName,
Image: cfg.Registry + "/ietm64/core:" + cfg.Tag, Image: cfg.Registry + "/" + cfg.Namespace + "core:" + cfg.Tag,
Env: []string{ Env: []string{
"SPRING_DATASOURCE_URL=jdbc:postgresql://" + pgName + ":5432/loremind", "SPRING_DATASOURCE_URL=jdbc:postgresql://" + pgName + ":5432/loremind",
"SPRING_DATASOURCE_USERNAME=loremind", "SPRING_DATASOURCE_USERNAME=loremind",

View File

@@ -252,7 +252,11 @@ services:
# API HTTP pour declenchement manuel via le bouton UI (Core -> Watchtower). # API HTTP pour declenchement manuel via le bouton UI (Core -> Watchtower).
WATCHTOWER_HTTP_API_UPDATE: "true" WATCHTOWER_HTTP_API_UPDATE: "true"
WATCHTOWER_HTTP_API_PERIODIC_POLLS: "true" WATCHTOWER_HTTP_API_PERIODIC_POLLS: "true"
WATCHTOWER_HTTP_API_TOKEN: "${WATCHTOWER_TOKEN:?set WATCHTOWER_TOKEN in .env (re-run installer)}" # Pas de ":?" ici : Compose interpole TOUT le fichier avant de filtrer
# par profile, donc un ":?" planterait le "up" meme quand autoupdate est
# inactif. L'installeur genere toujours WATCHTOWER_TOKEN ; defaut vide
# pour ne rien casser sur les deploiements sans autoupdate.
WATCHTOWER_HTTP_API_TOKEN: "${WATCHTOWER_TOKEN:-}"
WATCHTOWER_TIMEOUT: 60s WATCHTOWER_TIMEOUT: 60s
WATCHTOWER_NOTIFICATIONS_LEVEL: info WATCHTOWER_NOTIFICATIONS_LEVEL: info
TZ: ${TZ:-Europe/Paris} TZ: ${TZ:-Europe/Paris}