integrated sentry
This commit is contained in:
parent
92ff81284a
commit
2bea4fbcb0
5 changed files with 834 additions and 20 deletions
|
@ -44,11 +44,13 @@
|
|||
},
|
||||
"author": "ente <code@ente.io>",
|
||||
"devDependencies": {
|
||||
"@sentry/cli": "^1.68.0",
|
||||
"@typescript-eslint/eslint-plugin": "^4.20.0",
|
||||
"@typescript-eslint/parser": "^4.20.0",
|
||||
"electron": "^11.0.2",
|
||||
"electron-builder": "^22.10.5",
|
||||
"electron-builder-notarize": "^1.2.0",
|
||||
"electron-download": "^4.1.1",
|
||||
"eslint": "^7.23.0",
|
||||
"typescript": "^4.2.3"
|
||||
},
|
||||
|
|
105
sentry-symbols.js
Normal file
105
sentry-symbols.js
Normal file
|
@ -0,0 +1,105 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
let SentryCli;
|
||||
let download;
|
||||
|
||||
try {
|
||||
SentryCli = require('@sentry/cli');
|
||||
download = require('electron-download');
|
||||
} catch (e) {
|
||||
console.error('ERROR: Missing required packages, please run:');
|
||||
console.error('npm install --save-dev @sentry/cli electron-download');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const VERSION = /\bv?(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\da-z-]+(?:\.[\da-z-]+)*)?(?:\+[\da-z-]+(?:\.[\da-z-]+)*)?\b/i;
|
||||
const SYMBOL_CACHE_FOLDER = '.electron-symbols';
|
||||
const package = require('./package.json');
|
||||
const sentryCli = new SentryCli('./sentry.properties');
|
||||
|
||||
async function main() {
|
||||
let version = getElectronVersion();
|
||||
if (!version) {
|
||||
console.error('Cannot detect electron version, check package.json');
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('We are starting to download all possible electron symbols');
|
||||
console.log('We need it in order to symbolicate native crashes');
|
||||
console.log(
|
||||
'This step is only needed once whenever you update your electron version',
|
||||
);
|
||||
console.log('Just call this script again it should do everything for you.');
|
||||
|
||||
let zipPath = await downloadSymbols({
|
||||
version,
|
||||
platform: 'darwin',
|
||||
arch: 'x64',
|
||||
dsym: true,
|
||||
});
|
||||
await sentryCli.execute(['upload-dif', '-t', 'dsym', zipPath], true);
|
||||
|
||||
zipPath = await downloadSymbols({
|
||||
version,
|
||||
platform: 'win32',
|
||||
arch: 'ia32',
|
||||
symbols: true,
|
||||
});
|
||||
await sentryCli.execute(['upload-dif', '-t', 'breakpad', zipPath], true);
|
||||
|
||||
zipPath = await downloadSymbols({
|
||||
version,
|
||||
platform: 'win32',
|
||||
arch: 'x64',
|
||||
symbols: true,
|
||||
});
|
||||
await sentryCli.execute(['upload-dif', '-t', 'breakpad', zipPath], true);
|
||||
|
||||
zipPath = await downloadSymbols({
|
||||
version,
|
||||
platform: 'linux',
|
||||
arch: 'x64',
|
||||
symbols: true,
|
||||
});
|
||||
await sentryCli.execute(['upload-dif', '-t', 'breakpad', zipPath], true);
|
||||
|
||||
console.log('Finished downloading and uploading to Sentry');
|
||||
console.log(`Feel free to delete the ${SYMBOL_CACHE_FOLDER}`);
|
||||
}
|
||||
|
||||
function getElectronVersion() {
|
||||
if (!package) {
|
||||
return false;
|
||||
}
|
||||
|
||||
let electronVersion =
|
||||
(package.dependencies && package.dependencies.electron) ||
|
||||
(package.devDependencies && package.devDependencies.electron);
|
||||
|
||||
if (!electronVersion) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const matches = VERSION.exec(electronVersion);
|
||||
return matches ? matches[0] : false;
|
||||
}
|
||||
|
||||
async function downloadSymbols(options) {
|
||||
return new Promise((resolve, reject) => {
|
||||
download(
|
||||
{
|
||||
...options,
|
||||
cache: SYMBOL_CACHE_FOLDER,
|
||||
},
|
||||
(err, zipPath) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
} else {
|
||||
resolve(zipPath);
|
||||
}
|
||||
},
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
main().catch(e => console.error(e));
|
5
sentry.properties
Normal file
5
sentry.properties
Normal file
|
@ -0,0 +1,5 @@
|
|||
defaults.url=https://sentry.ente.io/
|
||||
defaults.org=ente
|
||||
defaults.project=bhari-frame
|
||||
auth.token=a2d7afbf181343609269599624e4eaea7871e2dc5e8f4401a14d9f5993e92309
|
||||
cli.executable=../../../../usr/local/lib/node_modules/@sentry/wizard/node_modules/@sentry/cli/bin/sentry-cli
|
|
@ -14,6 +14,8 @@ import setupIpcComs from './utils/ipcComms';
|
|||
import { buildContextMenu, buildMenuBar } from './utils/menuUtil';
|
||||
import * as Sentry from "@sentry/electron";
|
||||
|
||||
const SENTRY_DSN="https://e9268b784d1042a7a116f53c58ad2165@sentry.ente.io/5";
|
||||
|
||||
let tray: Tray;
|
||||
let mainWindow: BrowserWindow;
|
||||
|
||||
|
@ -62,13 +64,12 @@ else {
|
|||
// initialization and is ready to create browser windows.
|
||||
// Some APIs can only be used after this event occurs.
|
||||
app.on('ready', () => {
|
||||
Sentry.init({ dsn: "https://e9268b784d1042a7a116f53c58ad2165@sentry.ente.io/5" });
|
||||
Sentry.init({ dsn: SENTRY_DSN});
|
||||
setIsUpdateAvailable(false)
|
||||
mainWindow = createWindow();
|
||||
|
||||
Menu.setApplicationMenu(buildMenuBar())
|
||||
|
||||
|
||||
app.on('activate', function () {
|
||||
// On macOS it's common to re-create a window in the app when the
|
||||
// dock icon is clicked and there are no other windows open.
|
||||
|
|
Loading…
Reference in a new issue