diff --git a/.gitea/workflows/build-docker.yml b/.gitea/workflows/build-docker.yml index b76bb26..1cf0add 100644 --- a/.gitea/workflows/build-docker.yml +++ b/.gitea/workflows/build-docker.yml @@ -20,6 +20,11 @@ jobs: run: | docker build \ -f infra/prod/Dockerfile \ + --build-arg NUXT_PUBLIC_SENTRY_DSN="${{ secrets.INVENTORY_SENTRY_DSN_FRONT }}" \ + --build-arg SENTRY_URL="${{ secrets.SENTRY_URL }}" \ + --build-arg SENTRY_ORG="${{ secrets.SENTRY_ORG }}" \ + --build-arg SENTRY_PROJECT="${{ secrets.SENTRY_PROJECT }}" \ + --build-arg SENTRY_AUTH_TOKEN="${{ secrets.SENTRY_AUTH_TOKEN }}" \ -t gitea.malio.fr/malio-dev/inventory:${{ gitea.ref_name }} \ -t gitea.malio.fr/malio-dev/inventory:latest \ . diff --git a/infra/prod/.env.example b/infra/prod/.env.example index d0cabde..ccc8051 100644 --- a/infra/prod/.env.example +++ b/infra/prod/.env.example @@ -8,3 +8,7 @@ DATABASE_URL="postgresql://inventory_user:password@host.docker.internal:5432/inv # CORS CORS_ALLOW_ORIGIN='^https?://inventory\.malio-dev\.fr$' + +# Sentry / GlitchTip — error tracking backend (projet "inventory-api"). +# Runtime, prod only. Vide/absent => SDK inerte (rien envoyé). +# SENTRY_DSN=http://@:/ diff --git a/infra/prod/Dockerfile b/infra/prod/Dockerfile index e53a919..0af2f0e 100644 --- a/infra/prod/Dockerfile +++ b/infra/prod/Dockerfile @@ -31,11 +31,27 @@ RUN npm ci COPY frontend/ ./ COPY config/version.yaml /app/config/version.yaml + +# Error tracking → GlitchTip (build-time). Vides par défaut => module Sentry inerte +# et aucun upload de source maps. Fournis par la CI via --build-arg (secrets Gitea). +# Passés en préfixe inline du RUN (pas en ENV) pour ne pas persister le token dans +# une couche d'image. +ARG NUXT_PUBLIC_SENTRY_DSN="" +ARG SENTRY_URL="" +ARG SENTRY_ORG="" +ARG SENTRY_PROJECT="" +ARG SENTRY_AUTH_TOKEN="" + ENV CI=1 \ NUXT_TELEMETRY_DISABLED=1 \ NUXT_PUBLIC_API_BASE_URL=/api \ NUXT_PUBLIC_APP_BASE=/ -RUN npm run generate +RUN NUXT_PUBLIC_SENTRY_DSN="$NUXT_PUBLIC_SENTRY_DSN" \ + SENTRY_URL="$SENTRY_URL" \ + SENTRY_ORG="$SENTRY_ORG" \ + SENTRY_PROJECT="$SENTRY_PROJECT" \ + SENTRY_AUTH_TOKEN="$SENTRY_AUTH_TOKEN" \ + npm run generate # --- Stage 3: Production image --- FROM php:8.4-fpm AS production