diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml index f6bc680..3e9f1ba 100644 --- a/.gitea/workflows/release.yaml +++ b/.gitea/workflows/release.yaml @@ -158,12 +158,31 @@ jobs: - name: Install dependencies run: npm ci - - name: Build with source maps and upload to GlitchTip - env: - SENTRY_AUTH_TOKEN: ${{ secrets.GLITCHTIP_AUTH_TOKEN }} - BUILD_VERSION: ${{ gitea.ref_name }} + - name: Build with source maps run: npm run build + - name: Download glitchtip-cli + run: | + curl -L https://gitlab.com/glitchtip/glitchtip-cli/-/releases/permalink/latest/downloads/glitchtip-cli-x86_64-unknown-linux-musl \ + -o /usr/local/bin/glitchtip-cli + chmod +x /usr/local/bin/glitchtip-cli + + - name: Inject debug IDs into build artifacts + run: glitchtip-cli sourcemaps inject ./build + env: + SENTRY_URL: https://errors.libnovel.cc/ + SENTRY_AUTH_TOKEN: ${{ secrets.GLITCHTIP_AUTH_TOKEN }} + SENTRY_ORG: libnovel + SENTRY_PROJECT: libnovel-ui + + - name: Upload source maps to GlitchTip + run: glitchtip-cli sourcemaps upload ./build --release ${{ gitea.ref_name }} + env: + SENTRY_URL: https://errors.libnovel.cc/ + SENTRY_AUTH_TOKEN: ${{ secrets.GLITCHTIP_AUTH_TOKEN }} + SENTRY_ORG: libnovel + SENTRY_PROJECT: libnovel-ui + # ── docker: ui ──────────────────────────────────────────────────────────────── docker-ui: name: Docker / ui diff --git a/ui/vite.config.ts b/ui/vite.config.ts index bf75a1d..1e0e26b 100644 --- a/ui/vite.config.ts +++ b/ui/vite.config.ts @@ -1,36 +1,14 @@ import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; -import { sentryVitePlugin } from '@sentry/vite-plugin'; // Source maps are always generated so that the CI pipeline can upload them to -// GlitchTip after a release build. The sentryVitePlugin upload step is only -// active when SENTRY_AUTH_TOKEN is present (i.e. in the release CI job). +// GlitchTip via glitchtip-cli after a release build. export default defineConfig({ build: { sourcemap: true }, - plugins: [ - tailwindcss(), - sveltekit(), - sentryVitePlugin({ - org: 'libnovel', - project: 'libnovel-ui', - url: 'https://errors.libnovel.cc/', - // Auth token injected by CI via SENTRY_AUTH_TOKEN env var. - // When the env var is absent the plugin is a no-op. - authToken: process.env.SENTRY_AUTH_TOKEN, - // Release name matches the Docker image tag (e.g. "1.2.3"). - release: { name: process.env.BUILD_VERSION }, - // Don't upload source maps in local dev or CI type-check jobs. - disable: !process.env.SENTRY_AUTH_TOKEN, - // Source maps are uploaded to GlitchTip; do not ship them in the - // production bundle served to browsers. - sourcemaps: { - filesToDeleteAfterUpload: ['./build/**/*.map'] - } - }) - ], + plugins: [tailwindcss(), sveltekit()], ssr: { // Force these packages to be bundled into the server output rather than // treated as external requires. The production Docker image has no