create RCE package publishing script

closes LF-371
flag=none
qa risk: low

test plan:
-use the flags to skip certain parts of the script
 during testing
-run the script a few times, trying each of the
 code paths
-if you want to actually send the alerts, change the
 channel to #bottest

Change-Id: I81745e76595a2459214357b90371d05d0878c46c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/323199
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jackson Howe <jackson.howe@instructure.com>
QA-Review: Jackson Howe <jackson.howe@instructure.com>
Product-Review: Jake Oeding <jake.oeding@instructure.com>
This commit is contained in:
jake.oeding 2023-07-19 17:40:44 -04:00 committed by Jake Oeding
parent 20e2120170
commit 48d15e2496
2 changed files with 79 additions and 1 deletions

View File

@ -47,7 +47,8 @@
"fmt:fix": "prettier --write '**/*.js*' '**/*.ts*'",
"clean": "rm -rf lib && yarn clean:es && rm -rf coverage && yarn demo:clean",
"clean:es": "rm -rf es",
"generate-svgs": "yarn build:cjs && scripts/generateSvgs.js && prettier --write src/rce/plugins/instructure_equation/MathIcon/svgs.js"
"generate-svgs": "yarn build:cjs && scripts/generateSvgs.js && prettier --write src/rce/plugins/instructure_equation/MathIcon/svgs.js",
"publishToNpm": "scripts/publishToNpm.sh"
},
"keywords": [
"canvas",

View File

@ -0,0 +1,77 @@
#!/bin/bash
# This script will remind you to update the change log and
# to bump the version number of the package
# It will then check that you're logged into AWS (which
# is required to send the Slack notification)
# After those valiations are complete, it will prompt you
# to log into npm and it will then publish the package
# If the publish succeeds, it will send a Slack notification
# You can disable various steps of the script for dry runs
# by setting the following when running the script:
# SKIP_NPM_LOGIN=1
# SKIP_NPM_PUBLISH=1
# SKIP_ALERT=1
function prompt {
read -p "$1 (Y/N): " confirm &&
if [[ ! "$confirm" =~ ^[Yy]+([eE][sS])?$ ]]; then
echo -e "\n⚠ $2 ⚠️\n"
exit 1
fi
}
prompt "Did you update CHANGELOG.md?" "Update CHANGELOG.md before publishing to NPM."
prompt "Did you bump the version number in package.json?" "Bump the version number in package.json before publishing to NPM."
if [ -z "$SKIP_ALERT" ]; then
# runs the get-user command and throws away output
# checks for nonzero exit code to determine if the
# user is logged in or not
aws iam get-user > /dev/null 2>&1
if [[ ! $? -eq 0 ]]; then
echo -e "\n⚠ Please log into AWS and try again. ⚠️\n"
exit 1
fi
else
echo "Would have checked if you were logged into AWS"
fi
if [ -z "$SKIP_NPM_LOGIN" ]; then
echo -e "\nLogging into NPM...\n"
npm login
else
echo "Would have logged into NPM"
fi
if [ -z "$SKIP_NPM_PUBLISH" ]; then
echo -e "\nPublishing to NPM...\n"
npm publish
else
echo "Would have published to NPM"
fi
if [[ ! $? -eq 0 ]]; then
echo -e "\n🚨 Publish failed. Please try again. 🚨\n"
exit 1
fi
PACKAGE_VERSION=$(cat package.json | grep "version" | awk '{print $2}' | sed 's/[",]//g')
CHANGELOG_LINK="<https://gerrit.instructure.com/plugins/gitiles/canvas-lms/+/refs/heads/master/packages/canvas-rce/CHANGELOG.md | here>"
SLACK_MESSAGE="canvas-rce version $PACKAGE_VERSION has been published to NPM \n\nSee the full list of changes $CHANGELOG_LINK."
if [ -z "$SKIP_ALERT" ]; then
(
aws --region us-east-1 sqs send-message \
--queue-url https://sqs.us-east-1.amazonaws.com/636161780776/slack-lambda \
--message-body "{\"channel\":\"#ask-learning-foundations\",\"username\":\"RCE Publish\",\"text\":\"$SLACK_MESSAGE\"}"
) || echo "Failed to send Slack message."
else
echo "Would have sent a Slack message:"
echo -e $SLACK_MESSAGE
fi