fix(analytics): restore Umami tracking by fixing build-args and bypassing gatekeeper
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 14s
Build & Deploy / 🏗️ Build (push) Failing after 5m6s
Build & Deploy / 🧪 QA (push) Failing after 5m22s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 4s
Nightly QA / call-qa-workflow (push) Failing after 33s

This commit is contained in:
2026-04-12 01:55:48 +02:00
parent 155918e265
commit d5c0b91c97
4 changed files with 40 additions and 20 deletions

View File

@@ -202,6 +202,8 @@ jobs:
build-args: | build-args: |
NEXT_PUBLIC_BASE_URL=${{ needs.prepare.outputs.next_public_url }} NEXT_PUBLIC_BASE_URL=${{ needs.prepare.outputs.next_public_url }}
NEXT_PUBLIC_TARGET=${{ needs.prepare.outputs.target }} NEXT_PUBLIC_TARGET=${{ needs.prepare.outputs.target }}
NEXT_PUBLIC_UMAMI_WEBSITE_ID=${{ secrets.UMAMI_WEBSITE_ID || secrets.NEXT_PUBLIC_UMAMI_WEBSITE_ID || vars.UMAMI_WEBSITE_ID || vars.NEXT_PUBLIC_UMAMI_WEBSITE_ID }}
UMAMI_API_ENDPOINT=${{ secrets.UMAMI_API_ENDPOINT || secrets.NEXT_PUBLIC_UMAMI_SCRIPT_URL || vars.UMAMI_API_ENDPOINT || 'https://analytics.infra.mintel.me' }}
NPM_TOKEN=${{ secrets.REGISTRY_PASS }} NPM_TOKEN=${{ secrets.REGISTRY_PASS }}
tags: registry.infra.mintel.me/mintel/mb-grid-solutions:${{ needs.prepare.outputs.image_tag }} tags: registry.infra.mintel.me/mintel/mb-grid-solutions:${{ needs.prepare.outputs.image_tag }}
cache-from: type=registry,ref=registry.infra.mintel.me/mintel/mb-grid-solutions:buildcache cache-from: type=registry,ref=registry.infra.mintel.me/mintel/mb-grid-solutions:buildcache

View File

@@ -20,7 +20,7 @@ services:
- "traefik.docker.network=infra" - "traefik.docker.network=infra"
# Public Router paths that bypass Gatekeeper auth # Public Router paths that bypass Gatekeeper auth
- "traefik.http.routers.${PROJECT_NAME:-mb-grid}-public.rule=Host(`${TRAEFIK_HOST:-mb-grid-solutions.localhost}`) && PathRegexp(`^/([a-z]{2}/)?(health|login|gatekeeper|uploads|media|robots\\.txt|manifest\\.webmanifest|sitemap(-[0-9]+)?\\.xml|(.*/)?api/og(/.*)?|(.*/)?opengraph-image.*)`)" - "traefik.http.routers.${PROJECT_NAME:-mb-grid}-public.rule=Host(`${TRAEFIK_HOST:-mb-grid-solutions.localhost}`) && PathRegexp(`^/([a-z]{2}/)?(health|login|gatekeeper|uploads|media|robots\\.txt|manifest\\.webmanifest|sitemap(-[0-9]+)?\\.xml|(.*/)?api/og(/.*)?|(.*/)?opengraph-image.*|stats(/.*)?|errors(/.*)?)`)"
- "traefik.http.routers.${PROJECT_NAME:-mb-grid}-public.entrypoints=websecure" - "traefik.http.routers.${PROJECT_NAME:-mb-grid}-public.entrypoints=websecure"
- "traefik.http.routers.${PROJECT_NAME:-mb-grid}-public.tls.certresolver=le" - "traefik.http.routers.${PROJECT_NAME:-mb-grid}-public.tls.certresolver=le"
- "traefik.http.routers.${PROJECT_NAME:-mb-grid}-public.tls=true" - "traefik.http.routers.${PROJECT_NAME:-mb-grid}-public.tls=true"

View File

@@ -1,6 +1,8 @@
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
import createMiddleware from "next-intl/middleware"; import createMiddleware from "next-intl/middleware";
export default createMiddleware({ const intlMiddleware = createMiddleware({
// A list of all locales that are supported // A list of all locales that are supported
locales: ["de"], locales: ["de"],
@@ -11,6 +13,17 @@ export default createMiddleware({
localePrefix: "as-needed", localePrefix: "as-needed",
}); });
export default function middleware(request: NextRequest) {
const { pathname } = request.nextUrl;
// Explicit bypass for analytics and error tracking paths
if (pathname.startsWith("/stats") || pathname.startsWith("/errors")) {
return NextResponse.next();
}
return intlMiddleware(request);
}
export const config = { export const config = {
// Matcher for all pages and internationalized pathnames // Matcher for all pages and internationalized pathnames
// excluding api, _next, static files, etc. // excluding api, _next, static files, etc.

View File

@@ -50,24 +50,29 @@ export default buildConfig({
}, },
prodMigrations: migrations, prodMigrations: migrations,
}), }),
...(process.env.SMTP_HOST email: nodemailerAdapter({
? { defaultFromAddress:
email: nodemailerAdapter({ process.env.MAIL_FROM ||
defaultFromAddress: process.env.SMTP_FROM ||
process.env.SMTP_FROM || "info@mb-grid-solutions.com", "info@mb-grid-solutions.com",
defaultFromName: "MB Grid Solutions CMS", defaultFromName: "MB Grid Solutions CMS",
transportOptions: { transportOptions: {
host: process.env.SMTP_HOST, host: process.env.MAIL_HOST || process.env.SMTP_HOST,
port: parseInt(process.env.SMTP_PORT || "587"), port: parseInt(
auth: { process.env.MAIL_PORT || process.env.SMTP_PORT || "587",
user: process.env.SMTP_USER, ),
pass: process.env.SMTP_PASS, auth: {
}, user:
secure: process.env.SMTP_SECURE === "true", process.env.MAIL_USERNAME ||
}, process.env.MAIL_USER ||
}), process.env.SMTP_USER,
} pass: process.env.MAIL_PASSWORD || process.env.SMTP_PASS,
: {}), },
secure:
process.env.MAIL_SECURE === "true" ||
process.env.SMTP_SECURE === "true",
},
}),
sharp, sharp,
plugins: [ plugins: [
...(process.env.S3_ENDPOINT ...(process.env.S3_ENDPOINT