aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.circleci/config.yml3
-rw-r--r--development/sentry-publish.js55
-rw-r--r--package-lock.json8
-rw-r--r--package.json8
4 files changed, 63 insertions, 11 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
index 5ee699f3e..ee2054130 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -203,6 +203,9 @@ jobs:
- run:
name: build:announce
command: ./development/metamaskbot-build-announce.js
+ - run:
+ name: sentry sourcemaps upload
+ command: npm run sentry:publish
test-unit:
docker:
diff --git a/development/sentry-publish.js b/development/sentry-publish.js
new file mode 100644
index 000000000..ab3acabbd
--- /dev/null
+++ b/development/sentry-publish.js
@@ -0,0 +1,55 @@
+#!/usr/bin/env node
+const pify = require('pify')
+const exec = pify(require('child_process').exec, { multiArgs: true })
+const VERSION = require('../dist/chrome/manifest.json').version
+
+start().catch(console.error)
+
+async function start(){
+ const authWorked = await checkIfAuthWorks()
+ if (!authWorked) {
+ console.log(`Sentry auth failed...`)
+ }
+ // check if version exists or not
+ const versionAlreadyExists = await checkIfVersionExists()
+ // abort if versions exists
+ if (versionAlreadyExists) {
+ console.log(`Version "${VERSION}" already exists on Sentry, aborting sourcemap upload.`)
+ return
+ }
+
+ // create sentry release
+ console.log(`creating Sentry release for "${VERSION}"...`)
+ await exec(`sentry-cli releases --org 'metamask' --project 'metamask' new ${VERSION}`)
+ console.log(`removing any existing files from Sentry release "${VERSION}"...`)
+ await exec(`sentry-cli releases --org 'metamask' --project 'metamask' files ${VERSION} delete --all`)
+ // upload sentry source and sourcemaps
+ console.log(`uploading source files Sentry release "${VERSION}"...`)
+ await exec(`for FILEPATH in ./dist/chrome/*.js; do [ -e $FILEPATH ] || continue; export FILE=\`basename $FILEPATH\` && echo uploading $FILE && sentry-cli releases --org 'metamask' --project 'metamask' files ${VERSION} upload $FILEPATH metamask/$FILE; done;`)
+ console.log(`uploading sourcemaps Sentry release "${VERSION}"...`)
+ await exec(`sentry-cli releases --org 'metamask' --project 'metamask' files ${VERSION} upload-sourcemaps ./dist/sourcemaps/ --url-prefix 'sourcemaps'`)
+ console.log('all done!')
+}
+
+async function checkIfAuthWorks() {
+ const itWorked = await doesNotFail(async () => {
+ await exec(`sentry-cli releases --org 'metamask' --project 'metamask' list`)
+ })
+ return itWorked
+}
+
+async function checkIfVersionExists() {
+ const versionAlreadyExists = await doesNotFail(async () => {
+ await exec(`sentry-cli releases --org 'metamask' --project 'metamask' info ${VERSION}`)
+ })
+ return versionAlreadyExists
+}
+
+async function doesNotFail(asyncFn) {
+ try {
+ await asyncFn()
+ return true
+ } catch (err) {
+ return false
+ }
+}
diff --git a/package-lock.json b/package-lock.json
index 1029c507f..2c1589bec 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -188,7 +188,7 @@
"integrity": "sha1-AtD3eBwe5eG+WkMSoyX76LGzcjE=",
"dev": true,
"requires": {
- "https-proxy-agent": "2.2.0",
+ "https-proxy-agent": "2.2.1",
"node-fetch": "1.7.3",
"progress": "2.0.0",
"proxy-from-env": "1.0.0"
@@ -213,9 +213,9 @@
}
},
"https-proxy-agent": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.0.tgz",
- "integrity": "sha512-uUWcfXHvy/dwfM9bqa6AozvAjS32dZSTUYd/4SEpYKRg6LEcPLshksnQYRudM9AyNvUARMfAg5TLjUDyX/K4vA==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
+ "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
"dev": true,
"requires": {
"agent-base": "4.2.0",
diff --git a/package.json b/package.json
index 1227b82b7..310e357ca 100644
--- a/package.json
+++ b/package.json
@@ -31,13 +31,7 @@
"test:mascara:build:background": "browserify mascara/src/background.js -o dist/mascara/background.js",
"test:mascara:build:tests": "browserify test/integration/lib/first-time.js -o dist/mascara/tests.js",
"ganache:start": "ganache-cli -m 'phrase upgrade clock rough situate wedding elder clever doctor stamp excess tent'",
- "sentry": "export RELEASE=`cat app/manifest.json| jq -r .version` && npm run sentry:release && npm run sentry:upload",
- "sentry:release": "npm run sentry:release:new && npm run sentry:release:clean",
- "sentry:release:new": "sentry-cli releases --org 'metamask' --project 'metamask' new $RELEASE",
- "sentry:release:clean": "sentry-cli releases --org 'metamask' --project 'metamask' files $RELEASE delete --all",
- "sentry:upload": "npm run sentry:upload:source && npm run sentry:upload:maps",
- "sentry:upload:source": "for FILEPATH in ./dist/chrome/scripts/*.js; do [ -e $FILEPATH ] || continue; export FILE=`basename $FILEPATH` && echo uploading $FILE && sentry-cli releases --org 'metamask' --project 'metamask' files $RELEASE upload $FILEPATH metamask/scripts/$FILE; done;",
- "sentry:upload:maps": "sentry-cli releases --org 'metamask' --project 'metamask' files $RELEASE upload-sourcemaps ./dist/sourcemaps/ --url-prefix 'sourcemaps' --rewrite",
+ "sentry:publish": "node ./development/sentry-publish.js",
"lint": "gulp lint",
"lint:fix": "gulp lint:fix",
"ui": "npm run test:flat:build:states && beefy development/ui-dev.js:bundle.js --live --open --index=./development/index.html --cwd ./",