From e060e4c71f267a2bf5a0466dc00eb7c7439472a5 Mon Sep 17 00:00:00 2001 From: Mark Stacey Date: Thu, 5 Dec 2019 17:59:48 -0400 Subject: [PATCH] Improve Sentry publish script (#7417) The script will now throw an error if it fails to upload build artifacts, rather than failing silently. --- development/sentry-publish.js | 6 +- development/sentry-upload-artifacts.sh | 97 ++++++++++++++++++++++++++ 2 files changed, 98 insertions(+), 5 deletions(-) create mode 100755 development/sentry-upload-artifacts.sh diff --git a/development/sentry-publish.js b/development/sentry-publish.js index 8d9333a86..81034374e 100644 --- a/development/sentry-publish.js +++ b/development/sentry-publish.js @@ -27,11 +27,7 @@ async function start () { const versionHasArtifacts = versionAlreadyExists && await checkIfVersionHasArtifacts() if (!versionHasArtifacts) { // 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!') + await exec(`./development/sentry-upload-artifacts.sh --release ${VERSION}`) } else { console.log(`Version "${VERSION}" already has artifacts on Sentry, skipping sourcemap upload`) } diff --git a/development/sentry-upload-artifacts.sh b/development/sentry-upload-artifacts.sh new file mode 100755 index 000000000..12b799b94 --- /dev/null +++ b/development/sentry-upload-artifacts.sh @@ -0,0 +1,97 @@ +#!/usr/bin/env bash + +set -x +set -e +set -u +set -o pipefail + +readonly __SCRIPT_NAME__="${0##*/}" +readonly __SEE_HELP_MESSAGE__="See '${__SCRIPT_NAME__} --help' for more information." + +function die { + local message="${1}" + + printf 'ERROR: %s\n' "${message}" >&2 + + exit 1 +} + +function show_help { + cat << EOF +${__SCRIPT_NAME__}" +Upload JavaScript bundles and sourcemaps to Sentry + +Options: + -h, --help Show help text + -r, --release Sentry release to upload files to (defaults to 'VERSION' environment variable) +EOF +} + +function upload_bundles { + local release="${1}"; shift + + for filepath in ./dist/chrome/*.js + do + if [[ -f $filepath ]] + then + upload_bundle "${release}" "${filepath}" + fi + done +} + +function upload_bundle { + local release="${1}"; shift + local filepath="${1}"; shift + local filename + + filename="$( basename "${filepath}" )" + + printf 'Uploading %s\n' "${filename}" + sentry-cli releases --org 'metamask' --project 'metamask' files "${release}" upload "${filepath}" "metamask/${filename}" +} + +function upload_sourcemaps { + local release="${1}"; shift + + sentry-cli releases --org 'metamask' --project 'metamask' files "${release}" upload-sourcemaps ./dist/sourcemaps/ --url-prefix 'sourcemaps' +} + +function main { + local release=VERSION + + while :; do + case "${1-default}" in + -h|--help) + show_help + exit + ;; + -r|--release) + if [[ -z $2 ]] + then + printf "'release' option requires an argument.\\n" >&2 + printf '%s\n' "${__SEE_HELP_MESSAGE__}" >&2 + exit 1 + fi + release="${2}" + shift + ;; + *) + break + esac + + shift + done + + if [[ -z $release ]] + then + die 'Required parameter "release" missing; either include parameter or set VERSION environment variable' + fi + + printf 'uploading source files Sentry release "%s"...\n' "${release}" + upload_bundles "${release}" + printf 'uploading sourcemaps Sentry release "%s"...\n' "${release}" + upload_sourcemaps "${release}" + printf 'all done!\n' +} + +main "${@}"