Disable Sentry in CI, tag environment correctly

Client: VITE_SENTRY_ENVIRONMENT=ci baked in during CI build, disables
Sentry and sets 0 sample rates. Server: checks process.env.CI to
disable and tag as "ci" environment.

Production remains enabled with "production" environment tag.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ullrich Schäfer 2026-03-25 02:48:16 +01:00 committed by GitHub
parent 48c74f16f8
commit 119dc25f5a
5 changed files with 24 additions and 12 deletions

View file

@ -177,6 +177,8 @@ jobs:
- name: Build for production
run: pnpm build
env:
VITE_SENTRY_ENVIRONMENT: ci
- name: Run E2E tests
run: pnpm test:e2e

View file

@ -3,14 +3,17 @@ import { startTransition, StrictMode } from "react";
import { hydrateRoot } from "react-dom/client";
import { HydratedRouter } from "react-router/dom";
const sentryEnvironment = import.meta.env.VITE_SENTRY_ENVIRONMENT ??
(import.meta.env.PROD ? "production" : "development");
Sentry.init({
dsn: "https://a32ffcc575d34be072e91b20f247eeee@o4509530546634752.ingest.de.sentry.io/4509530555547728",
integrations: [Sentry.browserTracingIntegration(), Sentry.replayIntegration()],
environment: import.meta.env.PROD ? "production" : "development",
tracesSampleRate: 0.1,
environment: sentryEnvironment,
tracesSampleRate: sentryEnvironment === "ci" ? 0 : 0.1,
replaysSessionSampleRate: 0,
replaysOnErrorSampleRate: 1.0,
enabled: import.meta.env.PROD,
replaysOnErrorSampleRate: sentryEnvironment === "ci" ? 0 : 1.0,
enabled: import.meta.env.PROD && sentryEnvironment !== "ci",
});
startTransition(() => {

View file

@ -7,12 +7,14 @@ import { isbot } from "isbot";
import type { RenderToPipeableStreamOptions } from "react-dom/server";
import { renderToPipeableStream } from "react-dom/server";
const sentryEnvironment = process.env.CI ? "ci" : (process.env.NODE_ENV ?? "development");
Sentry.init({
dsn: "https://a32ffcc575d34be072e91b20f247eeee@o4509530546634752.ingest.de.sentry.io/4509530555547728",
release: process.env.SENTRY_RELEASE,
environment: process.env.NODE_ENV ?? "development",
environment: sentryEnvironment,
tracesSampleRate: 0.1,
enabled: process.env.NODE_ENV === "production",
enabled: process.env.NODE_ENV === "production" && !process.env.CI,
});
export const streamTimeout = 5_000;

View file

@ -3,14 +3,17 @@ import { startTransition, StrictMode } from "react";
import { hydrateRoot } from "react-dom/client";
import { HydratedRouter } from "react-router/dom";
const sentryEnvironment = import.meta.env.VITE_SENTRY_ENVIRONMENT ??
(import.meta.env.PROD ? "production" : "development");
Sentry.init({
dsn: "https://5215134cd78d5e6c199e29300b8425af@o4509530546634752.ingest.de.sentry.io/4511102546608208",
integrations: [Sentry.browserTracingIntegration(), Sentry.replayIntegration()],
environment: import.meta.env.PROD ? "production" : "development",
tracesSampleRate: 0.1,
environment: sentryEnvironment,
tracesSampleRate: sentryEnvironment === "ci" ? 0 : 0.1,
replaysSessionSampleRate: 0,
replaysOnErrorSampleRate: 1.0,
enabled: import.meta.env.PROD,
replaysOnErrorSampleRate: sentryEnvironment === "ci" ? 0 : 1.0,
enabled: import.meta.env.PROD && sentryEnvironment !== "ci",
});
startTransition(() => {

View file

@ -5,12 +5,14 @@ import { createReadStream, statSync } from "node:fs";
import { join, extname, resolve } from "node:path";
import { setupYjsWebSocket } from "./app/lib/yjs-server.ts";
const sentryEnvironment = process.env.CI ? "ci" : (process.env.NODE_ENV ?? "development");
Sentry.init({
dsn: "https://5215134cd78d5e6c199e29300b8425af@o4509530546634752.ingest.de.sentry.io/4511102546608208",
release: process.env.SENTRY_RELEASE,
environment: process.env.NODE_ENV ?? "development",
environment: sentryEnvironment,
tracesSampleRate: 0.1,
enabled: process.env.NODE_ENV === "production",
enabled: process.env.NODE_ENV === "production" && !process.env.CI,
});
const port = Number(process.env.PORT ?? 3001);