feat: more transparency
Some checks failed
Build & Deploy / 🔍 Prepare Environment (push) Successful in 4s
Build & Deploy / 🧪 QA (push) Failing after 39s
Build & Deploy / 🏗️ Build (push) Failing after 30s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🔔 Notifications (push) Successful in 2s

This commit is contained in:
2026-02-10 00:22:53 +01:00
parent 40ebdb31d9
commit 237bd46593
5 changed files with 68 additions and 15 deletions

View File

@@ -46,13 +46,13 @@ ENV PORT=3000
ENV NODE_ENV=production
# Copy standalone output and static files
# Create directory as root first, then copy with chown
RUN mkdir -p /app/.next/cache && chown -R nextjs:nodejs /app/.next/cache
COPY --from=builder --chown=nextjs:nodejs /app/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
# Ensure the cache directory specifically is writeable (Mintel Standard #16)
RUN mkdir -p .next/cache && chown -R nextjs:nodejs .next/cache
USER nextjs
CMD ["node", "server.js"]

View File

@@ -31,33 +31,51 @@ export class PinoLoggerService implements LoggerService {
}
trace(msg: string, ...args: unknown[]) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
this.logger.trace(msg, ...(args as any));
if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) {
(this.logger as any).trace(args[0] as object, msg, ...args.slice(1));
} else {
(this.logger as any).trace(msg, ...args);
}
}
debug(msg: string, ...args: unknown[]) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
this.logger.debug(msg, ...(args as any));
if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) {
(this.logger as any).debug(args[0] as object, msg, ...args.slice(1));
} else {
(this.logger as any).debug(msg, ...args);
}
}
info(msg: string, ...args: unknown[]) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
this.logger.info(msg, ...(args as any));
if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) {
(this.logger as any).info(args[0] as object, msg, ...args.slice(1));
} else {
(this.logger as any).info(msg, ...args);
}
}
warn(msg: string, ...args: unknown[]) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
this.logger.warn(msg, ...(args as any));
if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) {
(this.logger as any).warn(args[0] as object, msg, ...args.slice(1));
} else {
(this.logger as any).warn(msg, ...args);
}
}
error(msg: string, ...args: unknown[]) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
this.logger.error(msg, ...(args as any));
if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) {
(this.logger as any).error(args[0] as object, msg, ...args.slice(1));
} else {
(this.logger as any).error(msg, ...args);
}
}
fatal(msg: string, ...args: unknown[]) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
this.logger.fatal(msg, ...(args as any));
if (args.length > 0 && typeof args[0] === "object" && args[0] !== null) {
(this.logger as any).fatal(args[0] as object, msg, ...args.slice(1));
} else {
(this.logger as any).fatal(msg, ...args);
}
}
child(bindings: Record<string, unknown>): LoggerService {

13
sentry.client.config.ts Normal file
View File

@@ -0,0 +1,13 @@
import * as Sentry from "@sentry/nextjs";
import { config } from "./lib/config";
if (config.errors.glitchtip.enabled) {
Sentry.init({
dsn: config.errors.glitchtip.dsn,
tracesSampleRate: 1.0,
debug: config.isDevelopment,
environment: config.target || "production",
// Use the proxy path defined in config
tunnel: config.errors.glitchtip.proxyPath,
});
}

11
sentry.edge.config.ts Normal file
View File

@@ -0,0 +1,11 @@
import * as Sentry from "@sentry/nextjs";
import { config } from "./lib/config";
if (config.errors.glitchtip.enabled) {
Sentry.init({
dsn: config.errors.glitchtip.dsn,
tracesSampleRate: 1.0,
debug: config.isDevelopment,
environment: config.target || "production",
});
}

11
sentry.server.config.ts Normal file
View File

@@ -0,0 +1,11 @@
import * as Sentry from "@sentry/nextjs";
import { config } from "./lib/config";
if (config.errors.glitchtip.enabled) {
Sentry.init({
dsn: config.errors.glitchtip.dsn,
tracesSampleRate: 1.0,
debug: config.isDevelopment,
environment: config.target || "production",
});
}