From 8a6ceee712e2f7e1f9e3720d680f506a9c69c654 Mon Sep 17 00:00:00 2001 From: Neil Date: Mon, 8 May 2023 12:36:49 +0800 Subject: [PATCH] sentry: send sourcmap to sentry to improve debugging (#573) Co-authored-by: neil molina --- .github/workflows/build-sign-notarize.yml | 1 + modules/desktop/electron/electron.ts | 1 + modules/desktop/electron/vite.config.js | 16 ++- modules/desktop/package.json | 5 +- modules/desktop/vite.config.ts | 19 ++- pnpm-lock.yaml | 136 +++++++++++++++++++++- 6 files changed, 169 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build-sign-notarize.yml b/.github/workflows/build-sign-notarize.yml index 696aa93..26b19fb 100644 --- a/.github/workflows/build-sign-notarize.yml +++ b/.github/workflows/build-sign-notarize.yml @@ -105,6 +105,7 @@ jobs: APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_PASSWORD }} PUSHY_APP_ID: ${{ secrets.PUSHY_APP_ID }} + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} - name: build artifacts for publishing and notarization run: | diff --git a/modules/desktop/electron/electron.ts b/modules/desktop/electron/electron.ts index c5a4a4a..422f05a 100644 --- a/modules/desktop/electron/electron.ts +++ b/modules/desktop/electron/electron.ts @@ -22,6 +22,7 @@ if (app.isPackaged) { Sentry.init({ dsn: "https://5ff29bb5b3b64cd4bd4f4960ef1db2e3@o4504750197899264.ingest.sentry.io/4504750206746624", debug: true, + release: app.getVersion(), transportOptions: { maxQueueAgeDays: 30, maxQueueCount: 30, diff --git a/modules/desktop/electron/vite.config.js b/modules/desktop/electron/vite.config.js index e74d370..ca33946 100644 --- a/modules/desktop/electron/vite.config.js +++ b/modules/desktop/electron/vite.config.js @@ -1,5 +1,7 @@ import { join } from "path"; import { viteStaticCopy } from "vite-plugin-static-copy"; +import { sentryVitePlugin } from "@sentry/vite-plugin"; +import { version } from "../package.json"; const PACKAGE_ROOT = __dirname; const PROJECT_ROOT = join(PACKAGE_ROOT, "../.."); @@ -18,7 +20,7 @@ const config = { }, build: { ssr: true, - sourcemap: "inline", + sourcemap: true, outDir: "dist", assetsDir: ".", minify: process.env.MODE !== "development", @@ -42,7 +44,17 @@ const config = { dest: "." } ] - }) + }), + process.env.SENTRY_AUTH_TOKEN && + sentryVitePlugin({ + org: "tea-inc", + project: "electron", + authToken: process.env.SENTRY_AUTH_TOKEN, + sourcemaps: { + assets: "./dist/**" + }, + release: version + }) ] }; diff --git a/modules/desktop/package.json b/modules/desktop/package.json index a335202..98f972e 100644 --- a/modules/desktop/package.json +++ b/modules/desktop/package.json @@ -38,8 +38,8 @@ "@sveltejs/adapter-node": "^1.0.0-next.101", "@sveltejs/adapter-static": "^1.0.0-next.48", "@sveltejs/kit": "^1.15.9", - "@tea/ui": "workspace:*", "@tea/libtea": "workspace:*", + "@tea/ui": "workspace:*", "@testing-library/jest-dom": "^5.16.5", "@testing-library/svelte": "^3.2.2", "@types/bcryptjs": "^2.4.2", @@ -79,6 +79,7 @@ "@sentry/browser": "^7.49.0", "@sentry/electron": "^4.4.0", "@sentry/svelte": "^7.47.0", + "@sentry/vite-plugin": "^0.7.2", "@types/electron": "^1.6.10", "@types/mousetrap": "^1.6.11", "@vitest/coverage-c8": "^0.27.1", @@ -120,4 +121,4 @@ }, "homepage": "https://tea.xyz", "repository": "https://github.com/teaxyz/gui.git" -} \ No newline at end of file +} diff --git a/modules/desktop/vite.config.ts b/modules/desktop/vite.config.ts index 79af51e..5c2b010 100644 --- a/modules/desktop/vite.config.ts +++ b/modules/desktop/vite.config.ts @@ -1,11 +1,28 @@ import { sveltekit } from "@sveltejs/kit/vite"; +import { sentryVitePlugin } from "@sentry/vite-plugin"; import type { UserConfig } from "vite"; import path from "path"; +import { version } from "./package.json"; const isMock = process.env.BUILD_FOR === "preview"; const config: UserConfig = { - plugins: [sveltekit()], + build: { + sourcemap: true + }, + plugins: [ + sveltekit(), + process.env.SENTRY_AUTH_TOKEN && + sentryVitePlugin({ + org: "tea-inc", + project: "electron", + authToken: process.env.SENTRY_AUTH_TOKEN, + sourcemaps: { + assets: "./build/**" + }, + release: version + }) + ], resolve: { alias: { "@tea/ui/*": path.resolve("../ui/src/*"), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1e3425f..8f767eb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,6 +22,7 @@ importers: '@sentry/browser': ^7.49.0 '@sentry/electron': ^4.4.0 '@sentry/svelte': ^7.47.0 + '@sentry/vite-plugin': ^0.7.2 '@sveltejs/adapter-auto': ^1.0.0 '@sveltejs/adapter-node': ^1.0.0-next.101 '@sveltejs/adapter-static': ^1.0.0-next.48 @@ -97,6 +98,7 @@ importers: '@sentry/browser': 7.50.0 '@sentry/electron': 4.5.0 '@sentry/svelte': 7.50.0_svelte@3.58.0 + '@sentry/vite-plugin': 0.7.2 '@types/electron': 1.6.10 '@types/mousetrap': 1.6.11 '@vitest/coverage-c8': 0.27.3_jsdom@21.1.2 @@ -2183,6 +2185,16 @@ packages: tslib: 1.14.1 dev: false + /@sentry-internal/tracing/7.51.0: + resolution: {integrity: sha512-mhXl4B02OQq6/vevjX04OchmQbxPRaLci9vTTPcPcIz/n+wkum29ze35gHcJsPJUesScjd0m19Xou3C8fNnZRA==} + engines: {node: '>=8'} + dependencies: + '@sentry/core': 7.51.0 + '@sentry/types': 7.51.0 + '@sentry/utils': 7.51.0 + tslib: 1.14.1 + dev: false + /@sentry/browser/7.48.0: resolution: {integrity: sha512-tdx/2nhuiykncmXFlV4Dpp+Hxgt/v31LiyXE79IcM560wc+QmWKtzoW9azBWQ0xt5KOO3ERMib9qPE4/ql1/EQ==} engines: {node: '>=8'} @@ -2207,6 +2219,39 @@ packages: tslib: 1.14.1 dev: false + /@sentry/bundler-plugin-core/0.7.2: + resolution: {integrity: sha512-9d1MxEgRkPCTewQ26Bs+J/GxvnNVIRuQPZrHs70qRLotMiedH4KlHauh2MhbgH5rdgm0DUeOcafhxoBSK7ji3w==} + engines: {node: '>= 10'} + dependencies: + '@sentry/cli': 2.17.5 + '@sentry/node': 7.48.0 + '@sentry/tracing': 7.51.0 + find-up: 5.0.0 + glob: 9.3.2 + magic-string: 0.27.0 + unplugin: 1.0.1 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@sentry/cli/2.17.5: + resolution: {integrity: sha512-0tXjLDpaKB46851EMJ6NbP0o9/gdEaDSLAyjEtXxlVO6+RyhUj6x6jDwn0vis8n/7q0AvbIjAcJrot+TbZP+WQ==} + engines: {node: '>= 10'} + hasBin: true + requiresBuild: true + dependencies: + https-proxy-agent: 5.0.1 + node-fetch: 2.6.9 + progress: 2.0.3 + proxy-from-env: 1.1.0 + which: 2.0.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + /@sentry/core/7.48.0: resolution: {integrity: sha512-8FYuJTMpyuxRZvlen3gQ3rpOtVInSDmSyXqWEhCLuG/w34AtWoTiW7G516rsAAh6Hy1TP91GooMWbonP3XQNTQ==} engines: {node: '>=8'} @@ -2225,6 +2270,15 @@ packages: tslib: 1.14.1 dev: false + /@sentry/core/7.51.0: + resolution: {integrity: sha512-GgYwlXU8Y1kDEHsJO1Bmr2CNan5BzoNRR0TDBmxRgI/DgTNNSYrXeFDELgPi9/p/0XENeuttzDZ3iYd1nF7meA==} + engines: {node: '>=8'} + dependencies: + '@sentry/types': 7.51.0 + '@sentry/utils': 7.51.0 + tslib: 1.14.1 + dev: false + /@sentry/electron/4.5.0: resolution: {integrity: sha512-Xe5PsaiCw8CfqpgF9BQ0hn2fhBWqGHXPQgCh5oSLWOrck3MRhpWqH3g1sZJYlTBueJVXh5hxv1LveZwuKDiG2w==} dependencies: @@ -2287,6 +2341,13 @@ packages: tslib: 1.14.1 dev: false + /@sentry/tracing/7.51.0: + resolution: {integrity: sha512-NXBW0ucxb2MJJbkzPfwpaLGEs8DrSTp6FwqG6ejRdVydViyoWKFaRl0dedw1u2ACGDITEYnTfLO6YWTc3ruUNA==} + engines: {node: '>=8'} + dependencies: + '@sentry-internal/tracing': 7.51.0 + dev: false + /@sentry/types/7.48.0: resolution: {integrity: sha512-kkAszZwQ5/v4n7Yyw/DPNRWx7h724mVNRGZIJa9ggUMvTgMe7UKCZZ5wfQmYiKVlGbwd9pxXAcP8Oq15EbByFQ==} engines: {node: '>=8'} @@ -2297,6 +2358,11 @@ packages: engines: {node: '>=8'} dev: false + /@sentry/types/7.51.0: + resolution: {integrity: sha512-8REzzY0DslDryp6Yxj+tJ4NkXFHulLW9k8dgZV2Qo/0rBDMKir8g0IHYeN8ZBcnWrx2F+6rQb6uN6BjyLZY7Dg==} + engines: {node: '>=8'} + dev: false + /@sentry/utils/7.48.0: resolution: {integrity: sha512-d977sghkFVMfld0LrEyyY2gYrfayLPdDEpUDT+hg5y79r7zZDCFyHtdB86699E5K89MwDZahW7Erk+a1nk4x5w==} engines: {node: '>=8'} @@ -2313,6 +2379,24 @@ packages: tslib: 1.14.1 dev: false + /@sentry/utils/7.51.0: + resolution: {integrity: sha512-y5zq4IfZDCm6cg0EQJMghUM4YjZToFni7J5OKopLXKVtc9YtRtkYoFuFqEWm4HBuBwplreiS/KkDQgWn3FVn7A==} + engines: {node: '>=8'} + dependencies: + '@sentry/types': 7.51.0 + tslib: 1.14.1 + dev: false + + /@sentry/vite-plugin/0.7.2: + resolution: {integrity: sha512-gprT6wyc1JEtjZcWjv1jQSjT2QV62ZCLmXsjK4oKosb0uaaUMR4UgKxorZyNPGSY08YangjumeJZ7UX0/zakkw==} + engines: {node: '>= 10'} + dependencies: + '@sentry/bundler-plugin-core': 0.7.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + /@sinclair/typebox/0.25.24: resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} dev: true @@ -4501,7 +4585,6 @@ packages: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 - dev: true /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -6587,6 +6670,16 @@ packages: once: 1.4.0 dev: true + /glob/9.3.2: + resolution: {integrity: sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + fs.realpath: 1.0.0 + minimatch: 7.4.6 + minipass: 4.2.8 + path-scurry: 1.7.0 + dev: false + /global-agent/3.0.0: resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} engines: {node: '>=10.0'} @@ -7655,6 +7748,11 @@ packages: dependencies: yallist: 4.0.0 + /lru-cache/9.1.1: + resolution: {integrity: sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==} + engines: {node: 14 || >=16.14} + dev: false + /lru_map/0.3.3: resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} dev: false @@ -7682,7 +7780,6 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - dev: true /magic-string/0.30.0: resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} @@ -7848,6 +7945,13 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch/7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: false + /minimist/1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -7861,7 +7965,11 @@ packages: /minipass/4.2.8: resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} engines: {node: '>=8'} - dev: true + + /minipass/5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + dev: false /minizlib/2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} @@ -8309,6 +8417,14 @@ packages: /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + /path-scurry/1.7.0: + resolution: {integrity: sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 9.1.1 + minipass: 5.0.0 + dev: false + /path-to-regexp/0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} dev: true @@ -10297,6 +10413,15 @@ packages: webpack-virtual-modules: 0.4.6 dev: true + /unplugin/1.0.1: + resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==} + dependencies: + acorn: 8.8.2 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.5.0 + dev: false + /untildify/4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} @@ -10677,12 +10802,15 @@ packages: /webpack-sources/3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - dev: true /webpack-virtual-modules/0.4.6: resolution: {integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==} dev: true + /webpack-virtual-modules/0.5.0: + resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} + dev: false + /whatwg-encoding/2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'}