- 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
Google OAuth was implemented locally but never deployed; the login button
only renders when AUTH_GOOGLE_ID and AUTH_GOOGLE_SECRET are set. Also
restores /api/ai/test-* endpoints removed by mistake and wires Google
credentials into deploy workflows.
Co-authored-by: Cursor <cursoragent@cursor.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>
Le job deploy référençait needs:[ci] dans un autre workflow (inefficace
sur Gitea). Déclenchement via workflow_run après CI réussie, empreinte
GIT_COMMIT dans l'image, endpoint /api/build-info et health check sur
127.0.0.1:3000 avec comparaison du SHA attendu.
Co-authored-by: Cursor <cursoragent@cursor.com>
Le workflow redémarrait memento-note avec l'ancienne image avant git pull,
puis ne forçait pas le remplacement du conteneur après build. On force
maintenant --force-recreate après build et on log le commit déployé.
Co-authored-by: Cursor <cursoragent@cursor.com>
Les migrations échouaient sur une base vide (contraintes/index déjà créés par init).
Le workflow deploy ne recrée plus Postgres ni ne force les entrées _prisma_migrations.
Co-authored-by: Cursor <cursoragent@cursor.com>
- docker-compose.yml: switch postgres:16-alpine to pgvector/pgvector:pg16
- migration: rewrite with IF NOT EXISTS guards, DO block for safe
text→vector(1536) conversion, handles partial/re-run states
- schema.prisma (both): add @default(now()) on NoteEmbedding.updatedAt,
sync mcp-server embedding type to Unsupported("vector(1536)")
- deploy.yaml: add docker compose pull postgres before build
- Remplace git pull par git fetch + git reset --hard origin/main dans
le workflow CI pour éviter les conflits avec les fichiers locaux
- Ajoute un toast Sonner persistant (duration: Infinity) dès le clic sur
Générer, qui survit à la navigation et se met à jour en succès/erreur
avec action directe (Télécharger / Ouvrir)
Co-authored-by: Cursor <cursoragent@cursor.com>
The pipeline only built memento-note, causing mcp-server to run with
stale code/schema after pushes.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The app uses db push (no migration files), so migrate deploy was a no-op.
Also removes the redundant migration step from deploy.yaml since the
entrypoint now handles schema sync on every container start.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Run database migration after build and before container startup
so schema changes are always applied before the app goes live.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>