kopia lustrzana https://github.com/c9/core
refactor b9 to be more like d9 so we can share code
rodzic
3021fbb988
commit
099bbdf1ac
24
b9/b9
24
b9/b9
|
@ -16,6 +16,7 @@ B9=$B9_DIR/b9
|
||||||
|
|
||||||
source ./lib/_init.sh
|
source ./lib/_init.sh
|
||||||
|
|
||||||
|
MODE=$(_b9_init_mode)
|
||||||
NODEJS="$(_b9_init_nodejs)"
|
NODEJS="$(_b9_init_nodejs)"
|
||||||
NPM="$(_b9_init_npm)"
|
NPM="$(_b9_init_npm)"
|
||||||
|
|
||||||
|
@ -30,6 +31,10 @@ for MODULE in ./lib/*.sh; do
|
||||||
source $MODULE
|
source $MODULE
|
||||||
done
|
done
|
||||||
|
|
||||||
|
source $C9_DIR/plugins/c9.docker/d9/_testing.sh
|
||||||
|
source $C9_DIR/plugins/c9.docker/d9/_redis.sh
|
||||||
|
source $C9_DIR/plugins/c9.docker/d9/_settings.sh
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "Usage: $B9 [global options ...] COMMAND [commands options...]"
|
echo "Usage: $B9 [global options ...] COMMAND [commands options...]"
|
||||||
echo
|
echo
|
||||||
|
@ -38,6 +43,9 @@ usage() {
|
||||||
echo "Global options:"
|
echo "Global options:"
|
||||||
echo " --help show this help message"
|
echo " --help show this help message"
|
||||||
echo " --debug trace bash commands"
|
echo " --debug trace bash commands"
|
||||||
|
echo " --settings=MODE, -s=MODE which settings file to use"
|
||||||
|
echo " --deploy shortcut for '-settings=deploy'; use prod database"
|
||||||
|
echo " --devel shortcut for '-settings=devel'; use devel database"
|
||||||
echo
|
echo
|
||||||
echo "Commands:"
|
echo "Commands:"
|
||||||
echo
|
echo
|
||||||
|
@ -65,6 +73,22 @@ for ARG in "$@"; do
|
||||||
B9="$B9 --debug"
|
B9="$B9 --debug"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
-s=*|--settings=*)
|
||||||
|
MODE="${ARG#*=}"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--deploy)
|
||||||
|
MODE=deploy
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--devel)
|
||||||
|
MODE=devel
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--odev|--onlinedev)
|
||||||
|
MODE=onlinedev
|
||||||
|
shift
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
|
_b9_check_save_deploy_usage() {
|
||||||
|
echo "Use: check-deploy.sh --service=SERVICE [--server=SERVER] [--wait=WAIT_SECONDS] [--port=PORT]"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
_b9_check_save_deploy() {
|
_b9_check_save_deploy() {
|
||||||
local SERVICE
|
local SERVICE
|
||||||
local PORT
|
local PORT
|
||||||
local WAIT=default
|
local WAIT=default
|
||||||
local MODE=deploy
|
|
||||||
local SERVER=${SERVER:-localhost}
|
local SERVER=${SERVER:-localhost}
|
||||||
|
|
||||||
local P
|
local P
|
||||||
|
@ -11,15 +15,12 @@ _b9_check_save_deploy() {
|
||||||
--wait=*)
|
--wait=*)
|
||||||
WAIT=${P#*=}
|
WAIT=${P#*=}
|
||||||
;;
|
;;
|
||||||
--mode=*)
|
|
||||||
MODE=${P#*=}
|
|
||||||
;;
|
|
||||||
--server=*)
|
--server=*)
|
||||||
SERVER=${P#*=}
|
SERVER=${P#*=}
|
||||||
;;
|
;;
|
||||||
--service=*)
|
--service=*)
|
||||||
SERVICE=${P#*=}
|
SERVICE=${P#*=}
|
||||||
PORT=$(_b9_setting $MODE $SERVICE.port)
|
PORT=$(_do_get_setting $SERVICE.port)
|
||||||
;;
|
;;
|
||||||
--port=*)
|
--port=*)
|
||||||
PORT=${P#*=}
|
PORT=${P#*=}
|
||||||
|
@ -56,9 +57,9 @@ _b9_check_save_deploy() {
|
||||||
echo "Recent errors in service log that might help debug this:" >&2
|
echo "Recent errors in service log that might help debug this:" >&2
|
||||||
if [ "$SERVICE" ] && [ "$(type -t ssh)" != "function" ]; then
|
if [ "$SERVICE" ] && [ "$(type -t ssh)" != "function" ]; then
|
||||||
echo "Warning: ssh function not defined, trying gssh instead"
|
echo "Warning: ssh function not defined, trying gssh instead"
|
||||||
gssh $SERVER ${SERVICE//_/-}/scripts/tail-log.sh $(_b9_setting $MODE $SERVICE.logFile) >&2
|
gssh $SERVER ${SERVICE//_/-}/scripts/tail-log.sh $(_do_get_setting $SERVICE.logFile) >&2
|
||||||
elif [ "$SERVICE" ]; then
|
elif [ "$SERVICE" ]; then
|
||||||
ssh $SERVER ${SERVICE//_/-}/scripts/tail-log.sh $(_b9_setting $MODE $SERVICE.logFile) >&2
|
ssh $SERVER ${SERVICE//_/-}/scripts/tail-log.sh $(_do_get_setting $SERVICE.logFile) >&2
|
||||||
fi
|
fi
|
||||||
echo >&2
|
echo >&2
|
||||||
|
|
||||||
|
@ -66,15 +67,4 @@ _b9_check_save_deploy() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Confirmed successful deploy to $SERVER!"
|
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)"
|
|
||||||
}
|
}
|
|
@ -1,3 +1,33 @@
|
||||||
|
_b9_init_mode() {
|
||||||
|
local SUFFIX
|
||||||
|
SUFFIX=$(hostname | sed 's/.*-//')
|
||||||
|
local MODE
|
||||||
|
|
||||||
|
case $SUFFIX in
|
||||||
|
prod)
|
||||||
|
MODE=deploy
|
||||||
|
;;
|
||||||
|
dev)
|
||||||
|
MODE=devel
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
test)
|
||||||
|
MODE=test
|
||||||
|
;;
|
||||||
|
onlinedev)
|
||||||
|
MODE=$SUFFIX
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
MODE=devel
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ ! "$MODE" ]; then
|
||||||
|
MODE=devel
|
||||||
|
fi
|
||||||
|
echo $MODE
|
||||||
|
}
|
||||||
|
|
||||||
_b9_init_temp() {
|
_b9_init_temp() {
|
||||||
local TMPDIR
|
local TMPDIR
|
||||||
local UNAME=$(id -n -u)
|
local UNAME=$(id -n -u)
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
source $C9_DIR/plugins/c9.docker/d9/_testing.sh
|
|
||||||
|
|
||||||
b9_check() {
|
b9_check() {
|
||||||
echo "Running B9 tests"
|
echo "Running B9 tests"
|
||||||
_do_check_package
|
_do_check_package
|
||||||
|
|
|
@ -4,7 +4,6 @@ b9_deploy_usage() {
|
||||||
echo "Deploy a Cloud9 version"
|
echo "Deploy a Cloud9 version"
|
||||||
echo
|
echo
|
||||||
echo "Options:"
|
echo "Options:"
|
||||||
echo " --settings=[all|beta|deploy|onlinedev] (default: all)"
|
|
||||||
echo " --strategy=[slow_start|parallel|serial] Deploy strategy to use (default: slow_start)"
|
echo " --strategy=[slow_start|parallel|serial] Deploy strategy to use (default: slow_start)"
|
||||||
echo " --regex Interpret server patter as regular expression"
|
echo " --regex Interpret server patter as regular expression"
|
||||||
echo " --no-check skip the health check"
|
echo " --no-check skip the health check"
|
||||||
|
@ -18,7 +17,6 @@ b9_deploy() {
|
||||||
local TREEISH=$1 && shift
|
local TREEISH=$1 && shift
|
||||||
local SERVER_PATTERN=$1 && shift
|
local SERVER_PATTERN=$1 && shift
|
||||||
|
|
||||||
local SETTINGS=devel
|
|
||||||
local DRY_RUN=""
|
local DRY_RUN=""
|
||||||
local ASSET="gcs"
|
local ASSET="gcs"
|
||||||
local USE_REGEX=""
|
local USE_REGEX=""
|
||||||
|
@ -33,10 +31,6 @@ b9_deploy() {
|
||||||
local ARG
|
local ARG
|
||||||
for ARG in "$@"; do
|
for ARG in "$@"; do
|
||||||
case $ARG in
|
case $ARG in
|
||||||
--settings=*)
|
|
||||||
SETTINGS="${ARG#*=}"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
--strategy=*)
|
--strategy=*)
|
||||||
STRATEGY="${ARG#*=}"
|
STRATEGY="${ARG#*=}"
|
||||||
shift
|
shift
|
||||||
|
@ -72,18 +66,18 @@ b9_deploy() {
|
||||||
local SERVER_LIST
|
local SERVER_LIST
|
||||||
local VERSION
|
local VERSION
|
||||||
|
|
||||||
local TMPFILE=$(tempfile)
|
local TMPFILE=$(mktemp --tmpdir=$TMPDIR)
|
||||||
b9_package $TREEISH --settings=$SETTINGS --type=$TYPE | tee $TMPFILE
|
b9_package $TREEISH --type=$TYPE | tee $TMPFILE
|
||||||
VERSION=$(cat $TMPFILE | tail -n1)
|
VERSION=$(cat $TMPFILE | tail -n1)
|
||||||
rm $TMPFILE
|
rm $TMPFILE
|
||||||
|
|
||||||
SERVER_LIST="$(_b9_deploy_server_list $SERVER_PATTERN $USE_REGEX)"
|
SERVER_LIST="$(_b9_deploy_server_list $SERVER_PATTERN $USE_REGEX)"
|
||||||
local CMD="$B9 exec _b9_deploy_one_from_${ASSET} $NO_CHECK $VERSION $SERVICES $SETTINGS"
|
local CMD="$B9 --settings=$MODE exec _b9_deploy_one_from_${ASSET} $NO_CHECK $VERSION $SERVICES"
|
||||||
if [ "$DRY_RUN" == "1" ]; then
|
if [ "$DRY_RUN" == "1" ]; then
|
||||||
CMD="echo $CMD"
|
CMD="echo $CMD"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_b9_deploy_release_event "$SERVICES" $SETTINGS $VERSION $SERVER_PATTERN
|
_b9_deploy_release_event "$SERVICES" $VERSION $SERVER_PATTERN
|
||||||
_b9_deploy_strategy_${STRATEGY} "$SERVER_LIST" "$CMD"
|
_b9_deploy_strategy_${STRATEGY} "$SERVER_LIST" "$CMD"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,14 +129,13 @@ _b9_deploy_one_from_gcs() {
|
||||||
|
|
||||||
local VERSION=$1
|
local VERSION=$1
|
||||||
local SERVICES=$2
|
local SERVICES=$2
|
||||||
local SETTINGS=$3
|
|
||||||
local SERVER=$4
|
local SERVER=$4
|
||||||
|
|
||||||
echo Deploying $VERSION \($SERVICES\) to $SERVER ... >&2
|
echo Deploying $VERSION \($SERVICES\) to $SERVER ... >&2
|
||||||
|
|
||||||
_b9_deploy_upload_from_gcs $VERSION $SERVER
|
_b9_deploy_upload_from_gcs $VERSION $SERVER
|
||||||
_b9_deploy_update_services $VERSION $SERVICES $SERVER $SETTINGS
|
_b9_deploy_update_services $VERSION $SERVICES $SERVER
|
||||||
[ -z "$NO_CHECK" ] && _b9_deploy_check $SERVER $SERVICES $SETTINGS
|
[ -z "$NO_CHECK" ] && _b9_deploy_check $SERVER $SERVICES
|
||||||
|
|
||||||
echo Deployed $VERSION to $SERVER >&2
|
echo Deployed $VERSION to $SERVER >&2
|
||||||
}
|
}
|
||||||
|
@ -168,9 +161,8 @@ _b9_deploy_update_services() {
|
||||||
local VERSION=$1
|
local VERSION=$1
|
||||||
local SERVICES=$2
|
local SERVICES=$2
|
||||||
local SERVER=$3
|
local SERVER=$3
|
||||||
local SETTINGS=$4
|
|
||||||
|
|
||||||
local TOTAL_VERSIONS_TO_KEEP=5
|
local TOTAL_VERSIONS_TO_KEEP=7
|
||||||
|
|
||||||
local VERSIONS_DIR="/home/ubuntu/versions"
|
local VERSIONS_DIR="/home/ubuntu/versions"
|
||||||
local TARGET_DIR=${VERSIONS_DIR}/$VERSION
|
local TARGET_DIR=${VERSIONS_DIR}/$VERSION
|
||||||
|
@ -189,15 +181,13 @@ _b9_deploy_update_services() {
|
||||||
_b9_deploy_check() {
|
_b9_deploy_check() {
|
||||||
local SERVER=$1
|
local SERVER=$1
|
||||||
local SERVICES=$2
|
local SERVICES=$2
|
||||||
local SETTINGS=$3
|
|
||||||
|
|
||||||
echo $SERVICES | sed 's/,/\n/g' | parallel --halt 1 -j 0 $B9 exec _b9_deploy_check_one $SERVER $SETTINGS
|
echo $SERVICES | sed 's/,/\n/g' | parallel --halt 1 -j 0 $B9 exec _b9_deploy_check_one $SERVER
|
||||||
}
|
}
|
||||||
|
|
||||||
_b9_deploy_check_one() {
|
_b9_deploy_check_one() {
|
||||||
local SERVER=$1
|
local SERVER=$1
|
||||||
local SETTINGS=$2
|
local SERVICE=$2
|
||||||
local SERVICE=$3
|
|
||||||
|
|
||||||
local HOST
|
local HOST
|
||||||
local PORT
|
local PORT
|
||||||
|
@ -216,7 +206,7 @@ _b9_deploy_check_one() {
|
||||||
SERVICE=${SERVICE//-/_}
|
SERVICE=${SERVICE//-/_}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! _b9_check_save_deploy --wait=$WAIT $PORT --server=$HOST --mode=$SETTINGS --service=$SERVICE; then
|
if ! _b9_check_save_deploy --wait=$WAIT $PORT --server=$HOST --service=$SERVICE; then
|
||||||
echo "One or more safe deploy checks failed :(" >&2
|
echo "One or more safe deploy checks failed :(" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -224,12 +214,11 @@ _b9_deploy_check_one() {
|
||||||
|
|
||||||
_b9_deploy_release_event() {
|
_b9_deploy_release_event() {
|
||||||
local SERVICES=$1
|
local SERVICES=$1
|
||||||
local SETTINGS=$2
|
local VERSION=$2
|
||||||
local VERSION=$3
|
local SERVER_PATTERN=$3
|
||||||
local SERVER_PATTERN=$4
|
|
||||||
|
|
||||||
_b9_init_node_helper
|
_b9_init_node_helper
|
||||||
echo $SERVICES | sed 's/,/\n/g' | xargs -I '{}' -n1 $NODEJS $B9_DIR/lib/js/release_event.js '{}' $SETTINGS $VERSION $SERVER_PATTERN
|
echo $SERVICES | sed 's/,/\n/g' | xargs -I '{}' -n1 $NODEJS $B9_DIR/lib/js/release_event.js '{}' $MODE $VERSION $SERVER_PATTERN
|
||||||
}
|
}
|
||||||
|
|
||||||
_b9_deploy_ssh() {
|
_b9_deploy_ssh() {
|
||||||
|
|
|
@ -6,7 +6,6 @@ b9_package_usage() {
|
||||||
echo "Package and upload a version of Cloud 9"
|
echo "Package and upload a version of Cloud 9"
|
||||||
echo
|
echo
|
||||||
echo "Options:"
|
echo "Options:"
|
||||||
echo " --settings=[all|beta|deploy|onlinedev] (default: all)"
|
|
||||||
echo " --type=[newclient|docker] (default: newclient)"
|
echo " --type=[newclient|docker] (default: newclient)"
|
||||||
echo " --no-cache"
|
echo " --no-cache"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -17,7 +16,7 @@ b9_package() {
|
||||||
|
|
||||||
local TREEISH=$1
|
local TREEISH=$1
|
||||||
local TYPE=newclient
|
local TYPE=newclient
|
||||||
local SETTINGS=all
|
local SETTINGS=$MODE
|
||||||
local STORAGE=gcs
|
local STORAGE=gcs
|
||||||
local USE_CACHE=1
|
local USE_CACHE=1
|
||||||
|
|
||||||
|
@ -27,10 +26,6 @@ b9_package() {
|
||||||
local ARG
|
local ARG
|
||||||
for ARG in "$@"; do
|
for ARG in "$@"; do
|
||||||
case $ARG in
|
case $ARG in
|
||||||
--settings=*)
|
|
||||||
SETTINGS="${ARG#*=}"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
--type=*)
|
--type=*)
|
||||||
TYPE="${ARG#*=}"
|
TYPE="${ARG#*=}"
|
||||||
shift
|
shift
|
||||||
|
@ -53,11 +48,7 @@ b9_package() {
|
||||||
local WORKDIR
|
local WORKDIR
|
||||||
|
|
||||||
[ "$TYPE" == "newclient" ] && SETTINGS=all
|
[ "$TYPE" == "newclient" ] && SETTINGS=all
|
||||||
if [ "$TYPE" == "docker" ] && [ "$SETTINGS" == "all" ]; then
|
|
||||||
echo "You must define settings when packaging the docker daemon" 1>&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
_b9_package_init_git_cache
|
_b9_package_init_git_cache
|
||||||
|
|
||||||
VERSION=$(_b9_get_version $TREEISH $TYPE $SETTINGS)
|
VERSION=$(_b9_get_version $TREEISH $TYPE $SETTINGS)
|
||||||
|
@ -192,8 +183,13 @@ _d9_package_patch_package_json() {
|
||||||
}
|
}
|
||||||
|
|
||||||
_do_check_package() {
|
_do_check_package() {
|
||||||
|
MODE=devel
|
||||||
b9_package origin/master --type=newclient --no-cache
|
b9_package origin/master --type=newclient --no-cache
|
||||||
b9_package origin/master --type=newclient
|
b9_package origin/master --type=newclient
|
||||||
b9_package origin/master --type=docker --settings=deploy --no-cache
|
|
||||||
|
MODE=deploy
|
||||||
|
b9_package origin/master --type=docker --no-cache
|
||||||
|
|
||||||
|
MODE=devel
|
||||||
b9_package origin/master --docker --no-cache
|
b9_package origin/master --docker --no-cache
|
||||||
}
|
}
|
|
@ -8,7 +8,7 @@ _b9_dockerize_update_base() {
|
||||||
local VERSION
|
local VERSION
|
||||||
|
|
||||||
# build package
|
# build package
|
||||||
local TMPFILE=$(tempfile)
|
local TMPFILE=$(mktemp --tmpdir=$TMPDIR)
|
||||||
b9_package $TREEISH --type=newclient | tee $TMPFILE
|
b9_package $TREEISH --type=newclient | tee $TMPFILE
|
||||||
VERSION=$(cat $TMPFILE | tail -n1)
|
VERSION=$(cat $TMPFILE | tail -n1)
|
||||||
rm $TMPFILE
|
rm $TMPFILE
|
||||||
|
|
Ładowanie…
Reference in New Issue