refactor b9 to be more like d9 so we can share code

pull/248/head
Fabian Jakobs 2016-02-08 09:40:27 +00:00
rodzic 3021fbb988
commit 099bbdf1ac
7 zmienionych plików z 84 dodań i 57 usunięć

24
b9/b9
Wyświetl plik

@ -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
;; ;;

Wyświetl plik

@ -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)"
} }

Wyświetl plik

@ -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)

Wyświetl plik

@ -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

Wyświetl plik

@ -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() {

Wyświetl plik

@ -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
} }

Wyświetl plik

@ -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