feat(infra) : branche le SDK Sentry (back + front) vers GlitchTip #7
Reference in New Issue
Block a user
Delete Branch "feat/glitchtip-error-tracking"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Objectif
Brancher le SDK Sentry (back + front) d'Inventory vers l'instance GlitchTip auto-hébergée — error tracking centralisé du ticket INFRA #146. Les erreurs back (Symfony) et front (Nuxt) remontent comme issues groupées par projet.
Pattern calqué sur l'intégration existante de Lesstime (référence), avec une adaptation propre à Inventory.
Backend (Symfony)
composer require sentry/sentry-symfony:^5.10, bundle enregistré prod-only (config/bundles.php)config/packages/sentry.yaml: handler Monolog niveau ERROR+,register_error_listener: false(évite les doublons avec Monolog), ignore les 4xx /AccessDeniedException, pas d'APM (traces_sample_rate: 0),release: %app.version%config/services.yamlimporteversion.yaml→ exposeapp.versionau container (adaptation Inventory : ce paramètre n'était pas câblé côté back, contrairement à Lesstime ; sans ça la compilation prod échouait).env: blocSENTRY_DSNdocumenté, vide par défaut → SDK inerteFrontend (Nuxt)
@sentry/nuxt@^10.61; module chargé uniquement siNUXT_PUBLIC_SENTRY_DSNest défini (zéro overhead en dev)runtimeConfig.public.sentry+sourcemap: { client: 'hidden' }+ options d'upload des source maps (fournies au build via secrets CI)sentry.client.config.ts: init côté client gardée parif (dsn)Sécurité
Aucun secret commité. Tous les DSN sont vides par défaut → rien n'est envoyé tant que la prod n'est pas configurée.
Vérifications
cache:clear --env=prod),app.version= 1.9.49 enregistréphp-cs-fixerpropreReste à faire (déploiement, hors code)
inventory-apietinventory-front→ récupérer les DSNSENTRY_DSN=…NUXT_PUBLIC_SENTRY_DSN=…+SENTRY_URL/SENTRY_ORG/SENTRY_PROJECT/SENTRY_AUTH_TOKEN🤖 Generated with Claude Code
📋 Étapes restantes pour activer l'error tracking en prod
Cette PR fait le branchement applicatif (SDK back + front). Reste le plumbing déploiement + la config, à faire dans 3 zones.
1. ENV (fichiers / serveur)
SENTRY_DSNinfra/prod/.envsur le serveur (env_file du compose, non versionné)inventory-apiNUXT_PUBLIC_SENTRY_DSNinventory-frontSENTRY_URL/SENTRY_ORG/SENTRY_PROJECT/SENTRY_AUTH_TOKEN2. PROD (serveur + GlitchTip)
https://logs.malio-dev.fr) → créer 2 projets :inventory-api(php-symfony) etinventory-front(javascript-vue) → noter les 2 DSN.infra/prod/.env(à côté dudocker-compose.yml) et ajouterSENTRY_DSN=<DSN inventory-api>../deploy.sh <tag>→ le back commence à remonter ses erreurs immédiatement.3. GITEA (CI + secrets + merge)
⚠️ Plumbing front manquant — sans ça
inventory-frontne recevra jamais son DSN :infra/prod/Dockerfile(stagefrontend-build, avantnpm run generate) : ajouterARG/ENVpourNUXT_PUBLIC_SENTRY_DSN,SENTRY_URL,SENTRY_ORG,SENTRY_PROJECT,SENTRY_AUTH_TOKEN..gitea/workflows/build-docker.yml: ajouter les--build-arg ...=${{ secrets.* }}audocker build.INVENTORY_SENTRY_DSN_FRONT,SENTRY_URL,SENTRY_ORG,SENTRY_PROJECT,SENTRY_AUTH_TOKEN.Puis : merger cette PR dans
develop→ syncdevelop → master→ tagvX.Y.Z(déclenchebuild-docker.ymlqui build + push l'image).Ordre conseillé : (2.1 créer projets GlitchTip) → (3 Dockerfile+CI+secrets) → merge+tag → (2.2
SENTRY_DSNserveur) → deploy.