Docker Compose lit .env (pas .env.docker) pour interpoler ${POSTGRES_PASSWORD}.
Sans .env, il utilise le fallback 'memento' → auth DB fail.
Fix: grep -v ??? .env.docker > .env à chaque deploy.
- Supprime rm -f (causait la perte de ~23 vars a chaque deploy)
- upsert ecrit KEY=value sans quotes (compatible Docker Compose v2)
- CRLF strip avant ecriture (sed s/\r$//)
- Sanity-check post-upsert: abort si NEXTAUTH_SECRET/AUTH_GOOGLE_ID/etc manquantes
- Header ## AUTO-MANAGED BY CI ## en tete de fichier genere
- deploy-prod.sh: sanity-check pre-deploy (NEXTAUTH_URL/SECRET/GOOGLE_ID/SECRET)
- Ajoute .env.docker.example (reference complete de toutes les vars)
- Ajoute MCP_SERVER_MODE/MCP_SERVER_URL manquantes dans deploy.yaml
Le fichier accumulait des entrees quotees des anciens deploys.
Le sed regex ne matchait pas (CRLF ou format inattendu).
Fix root cause:
- ci.yaml + deploy.yaml: rm -f avant touch (fichier clean a chaque deploy)
- deploy-prod.sh: tr -d '"' supprime TOUT guillemet du fichier (nuclear, infaillible)
Root cause: workflow deploy.yaml ligne 74 écrivait VAR="value"
Docker Compose v2 (2.22+) rejette ce format.
Fix source: echo "${key}=${val}" (sans quotes autour de la valeur)
Fix sed: deux passes séparées pour double et simple quotes, sans \x27
Docker Compose v2 (2.22+) rejette les valeurs quotées (VAR="value")
avec l'erreur 'unexpected character " in variable name'.
Ajout d'un sed avant load_env_docker qui strip les guillemets entourants.
Remplace `source .env.docker` par un parse ligne par ligne qui ne crashe pas
quand une valeur contient un guillemet mal fermé (erreur: unexpected EOF
while looking for matching "). Les variables valides sont quand même exportées.
Co-authored-by: Cursor <cursoragent@cursor.com>
Le script utilisait POSTGRES_USER=memento par défaut sans sourcer .env.docker,
ce qui faisait échouer pg_isready en prod. Ajoute wait --wait, credentials
container-side et logs diagnostiques en cas d'échec.
Co-authored-by: Cursor <cursoragent@cursor.com>
CI/CD Pipeline Improvement - Add automated rollback on deployment
failure and Telegram notifications for CI/deploy status.
Changes:
- scripts/deploy-prod.sh: Add rollback_save_image(), rollback_restore_image(),
and telegram_notify() functions
- scripts/deploy-prod.sh: Save current Docker image before building new one
- scripts/deploy-prod.sh: Rollback to previous image on health check failure
- .gitea/workflows/ci.yaml: Add Telegram notifications for CI failures
- memento-note/eslint.config.mjs: Disable experimental React Compiler rules
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Le deploy SSH depuis ubuntu-24.04 ne rebuildait pas sur 190 (image d'hier).
Déploiement sur runner docker-host, artifact Next.js de la CI, Dockerfile.prebuilt,
script deploy-prod.sh. workflow_run supprimé au profit de needs:[ci] même fichier.
Co-authored-by: Cursor <cursoragent@cursor.com>