From 3de091f351e43f718f52bddbad1ff6cf31a473db Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Fri, 5 Feb 2016 09:57:26 +0000 Subject: [PATCH] inline save deploy script --- b9/lib/_check_save_deploy.sh | 80 ++++++++++++++++++++++++++++++++++++ b9/lib/deploy.sh | 2 +- package.json | 2 +- 3 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 b9/lib/_check_save_deploy.sh diff --git a/b9/lib/_check_save_deploy.sh b/b9/lib/_check_save_deploy.sh new file mode 100644 index 00000000..2e26140a --- /dev/null +++ b/b9/lib/_check_save_deploy.sh @@ -0,0 +1,80 @@ +_b9_check_save_deploy() { + local SERVICE + local PORT + local WAIT=default + local MODE=deploy + local SERVER=${SERVER:-localhost} + + local P + for P in "$@"; do + case "$P" in + --wait=*) + WAIT=${P#*=} + ;; + --mode=*) + MODE=${P#*=} + ;; + --server=*) + SERVER=${P#*=} + ;; + --service=*) + SERVICE=${P#*=} + PORT=$(_b9_setting $MODE $SERVICE.port) + ;; + --port=*) + PORT=${P#*=} + ;; + *) + echo "Illegal argument: $P" + _b9_check_save_deploy_usage + esac + done + + if [ "$WAIT" == "default" ]; then + WAIT=45 + elif [ "$WAIT" == "long" ]; then + WAIT=60 + fi + if [ ! "$PORT" ]; then + _b9_check_save_deploy_usage + fi + + for I in {1..160}; do + if curl http://$SERVER:$PORT/_health &>/dev/null; then + break + fi + sleep 1 + done + + echo "Service $SERVICE running, testing if it stays up for $WAIT seconds..." + + if ! curl http://$SERVER:$PORT/_health?delay=$((WAIT * 1000)) &>/dev/null; then + echo "Failed: service $SERVICE at $SERVER:$PORT failed to stay up for $WAIT seconds" >&2 + echo "Likely it exited with an error, shown in raygun, or the process was killed." >&2 + echo "" >&2 + + echo "Recent errors in service log that might help debug this:" >&2 + if [ "$SERVICE" ] && [ "$(type -t ssh)" != "function" ]; then + echo "Warning: ssh function not defined, trying gssh instead" + gssh $SERVER ${SERVICE//_/-}/scripts/tail-log.sh $(_b9_setting $MODE $SERVICE.logFile) >&2 + elif [ "$SERVICE" ]; then + ssh $SERVER ${SERVICE//_/-}/scripts/tail-log.sh $(_b9_setting $MODE $SERVICE.logFile) >&2 + fi + echo >&2 + + return 1 + fi + + echo "Confirmed successful deploy to $SERVER!" +} + +_b9_check_save_deploy_usage() { + echo "Use: check-deploy.sh --service=SERVICE [--server=SERVER] [--wait=WAIT_SECONDS] [--port=PORT]" + exit 1 +} + +_b9_setting() { + local MODE=$1 + local SETTING="['"${2//./"']['"}"']" + $NODEJS -e "console.log(require('$B9_DIR/../settings/$MODE')()$SETTING)" +} \ No newline at end of file diff --git a/b9/lib/deploy.sh b/b9/lib/deploy.sh index 200e7b71..d558a932 100644 --- a/b9/lib/deploy.sh +++ b/b9/lib/deploy.sh @@ -216,7 +216,7 @@ _b9_deploy_check_one() { SERVICE=${SERVICE//-/_} fi - if ! $C9_DIR/scripts/check-safe-deploy.sh --wait=$WAIT $PORT --server=$HOST --mode=$SETTINGS --service=$SERVICE; then + if ! _b9_check_save_deploy --wait=$WAIT $PORT --server=$HOST --mode=$SETTINGS --service=$SERVICE; then echo "One or more safe deploy checks failed :(" >&2 exit 1 fi diff --git a/package.json b/package.json index ba5ad921..c658050a 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "c9.ide.language": "#ad77e2cbd6", "c9.ide.language.css": "#be07d72209", "c9.ide.language.generic": "#a4023db7f6", - "c9.ide.language.html": "#9be847c0ce", + "c9.ide.language.html": "#ae8c4f5f6e", "c9.ide.language.html.diff": "#24f3608d26", "c9.ide.language.javascript": "#c6d102471f", "c9.ide.language.javascript.immediate": "#c8b1e5767a",