Merge pull request +12103 from c9/b9

B9
pull/248/head
Fabian Jakobs 2016-02-10 10:43:54 +01:00
commit f33299be76
8 zmienionych plików z 101 dodań i 73 usunięć

26
b9/b9
Wyświetl plik

@ -16,6 +16,7 @@ B9=$B9_DIR/b9
source ./lib/_init.sh
MODE=$(_b9_init_mode)
NODEJS="$(_b9_init_nodejs)"
NPM="$(_b9_init_npm)"
@ -30,6 +31,10 @@ for MODULE in ./lib/*.sh; do
source $MODULE
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() {
echo "Usage: $B9 [global options ...] COMMAND [commands options...]"
echo
@ -38,6 +43,9 @@ usage() {
echo "Global options:"
echo " --help show this help message"
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 "Commands:"
echo
@ -51,7 +59,7 @@ usage() {
echo " exec COMMAND [ARGS] Run arbitrary b9 function"
echo
echo "Environment variables:"
echo "B9_GITHUB_SSH_FILE SSH file to use for downloading from Github"
echo "B9_GITHUB_SSH_FILE SSH file to use for downloading from Github"
exit 1
}
@ -65,6 +73,22 @@ for ARG in "$@"; do
B9="$B9 --debug"
shift
;;
-s=*|--settings=*)
MODE="${ARG#*=}"
shift
;;
--deploy)
MODE=deploy
shift
;;
--devel)
MODE=devel
shift
;;
--odev|--onlinedev)
MODE=onlinedev
shift
;;
*)
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() {
local SERVICE
local PORT
local WAIT=default
local MODE=deploy
local SERVER=${SERVER:-localhost}
local P
@ -11,15 +15,12 @@ _b9_check_save_deploy() {
--wait=*)
WAIT=${P#*=}
;;
--mode=*)
MODE=${P#*=}
;;
--server=*)
SERVER=${P#*=}
;;
--service=*)
SERVICE=${P#*=}
PORT=$(_b9_setting $MODE $SERVICE.port)
PORT=$(_do_get_setting $SERVICE.port)
;;
--port=*)
PORT=${P#*=}
@ -56,9 +57,9 @@ _b9_check_save_deploy() {
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
gssh $SERVER ${SERVICE//_/-}/scripts/tail-log.sh $(_do_get_setting $SERVICE.logFile) >&2
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
echo >&2
@ -66,15 +67,4 @@ _b9_check_save_deploy() {
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)"
}

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() {
local TMPDIR
local UNAME=$(id -n -u)

Wyświetl plik

@ -1,5 +1,3 @@
source $C9_DIR/plugins/c9.docker/d9/_testing.sh
b9_check() {
echo "Running B9 tests"
_do_check_package

Wyświetl plik

@ -4,7 +4,6 @@ b9_deploy_usage() {
echo "Deploy a Cloud9 version"
echo
echo "Options:"
echo " --settings=[all|beta|deploy|onlinedev] (default: all)"
echo " --strategy=[slow_start|parallel|serial] Deploy strategy to use (default: slow_start)"
echo " --regex Interpret server patter as regular expression"
echo " --no-check skip the health check"
@ -18,7 +17,6 @@ b9_deploy() {
local TREEISH=$1 && shift
local SERVER_PATTERN=$1 && shift
local SETTINGS=devel
local DRY_RUN=""
local ASSET="gcs"
local USE_REGEX=""
@ -33,10 +31,6 @@ b9_deploy() {
local ARG
for ARG in "$@"; do
case $ARG in
--settings=*)
SETTINGS="${ARG#*=}"
shift
;;
--strategy=*)
STRATEGY="${ARG#*=}"
shift
@ -72,18 +66,18 @@ b9_deploy() {
local SERVER_LIST
local VERSION
local TMPFILE=$(tempfile)
b9_package $TREEISH --settings=$SETTINGS --type=$TYPE | tee $TMPFILE
local TMPFILE=$(mktemp --tmpdir=$TMPDIR)
b9_package $TREEISH --type=$TYPE | tee $TMPFILE
VERSION=$(cat $TMPFILE | tail -n1)
rm $TMPFILE
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
CMD="echo $CMD"
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"
}
@ -135,14 +129,13 @@ _b9_deploy_one_from_gcs() {
local VERSION=$1
local SERVICES=$2
local SETTINGS=$3
local SERVER=$4
local SERVER=$3
echo Deploying $VERSION \($SERVICES\) to $SERVER ... >&2
_b9_deploy_upload_from_gcs $VERSION $SERVER
_b9_deploy_update_services $VERSION $SERVICES $SERVER $SETTINGS
[ -z "$NO_CHECK" ] && _b9_deploy_check $SERVER $SERVICES $SETTINGS
_b9_deploy_update_services $VERSION $SERVICES $SERVER
[ -z "$NO_CHECK" ] && _b9_deploy_check $SERVER $SERVICES
echo Deployed $VERSION to $SERVER >&2
}
@ -168,9 +161,8 @@ _b9_deploy_update_services() {
local VERSION=$1
local SERVICES=$2
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 TARGET_DIR=${VERSIONS_DIR}/$VERSION
@ -190,15 +182,13 @@ _b9_deploy_update_services() {
_b9_deploy_check() {
local SERVER=$1
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() {
local SERVER=$1
local SETTINGS=$2
local SERVICE=$3
local SERVICE=$2
local HOST
local PORT
@ -217,7 +207,7 @@ _b9_deploy_check_one() {
SERVICE=${SERVICE//-/_}
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
exit 1
fi
@ -225,12 +215,11 @@ _b9_deploy_check_one() {
_b9_deploy_release_event() {
local SERVICES=$1
local SETTINGS=$2
local VERSION=$3
local SERVER_PATTERN=$4
local VERSION=$2
local SERVER_PATTERN=$3
_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() {

Wyświetl plik

@ -6,7 +6,6 @@ b9_package_usage() {
echo "Package and upload a version of Cloud 9"
echo
echo "Options:"
echo " --settings=[all|beta|deploy|onlinedev] (default: all)"
echo " --type=[newclient|docker] (default: newclient)"
echo " --no-cache"
exit 1
@ -17,7 +16,7 @@ b9_package() {
local TREEISH=$1
local TYPE=newclient
local SETTINGS=all
local SETTINGS=$MODE
local STORAGE=gcs
local USE_CACHE=1
@ -27,10 +26,6 @@ b9_package() {
local ARG
for ARG in "$@"; do
case $ARG in
--settings=*)
SETTINGS="${ARG#*=}"
shift
;;
--type=*)
TYPE="${ARG#*=}"
shift
@ -53,11 +48,7 @@ b9_package() {
local WORKDIR
[ "$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
VERSION=$(_b9_get_version $TREEISH $TYPE $SETTINGS)
@ -71,7 +62,7 @@ b9_package() {
_d9_package_sync_workdir $TYPE $WORKDIR $VERSION $SETTINGS
_d9_package_npm_install $WORKDIR
_d9_package_cleanup_workdir $WORKDIR
_d9_package_upload_${STORAGE} $WORKDIR $VERSION
_d9_package_upload $STORAGE $WORKDIR $VERSION
echo $VERSION
}
@ -90,10 +81,7 @@ _b9_package_init_git_cache() {
_d9_package_init_work_dir() {
local VERSION=$1
local WORK_DIR=$TMP/${VERSION}
mkdir -p $WORK_DIR
echo $WORK_DIR
mktemp -d b9-package-${VERSION}-XXXXXXXXXXXXX --tmpdir=$TMP
}
_b9_get_version() {
@ -110,6 +98,10 @@ _b9_package_is_cached() {
local STORAGE=$1
local VERSION=$2
if [ -d $TMP/$VERSION ]; then
return
fi
case $STORAGE in
gcs)
_b9_package_is_cached_gcs $VERSION
@ -118,7 +110,7 @@ _b9_package_is_cached() {
_b9_package_is_cached_docker $VERSION
;;
*)
echo "Invalid storage type: $STORAGE"
echo "Invalid storage type: $STORAGE" 1>&2
exit 1
;;
esac
@ -126,8 +118,8 @@ _b9_package_is_cached() {
_d9_package_upload() {
local STORAGE=$1
local $WORKDIR=$2
local $VERSION=$3
local WORKDIR=$2
local VERSION=$3
case $STORAGE in
gcs)
@ -140,6 +132,8 @@ _d9_package_upload() {
exit 1
;;
esac
mv $WORKDIR $TMP/$VERSION
}
_d9_package_sync_workdir() {
@ -192,8 +186,13 @@ _d9_package_patch_package_json() {
}
_do_check_package() {
MODE=devel
b9_package origin/master --type=newclient --no-cache
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
}

Wyświetl plik

@ -8,7 +8,7 @@ _b9_dockerize_update_base() {
local VERSION
# build package
local TMPFILE=$(mktemp)
local TMPFILE=$(mktemp --tmpdir=$TMPDIR)
b9_package $TREEISH --type=newclient | tee $TMPFILE
VERSION=$(cat $TMPFILE | tail -n1)
rm $TMPFILE

Wyświetl plik

@ -10,14 +10,12 @@ _d9_package_upload_gcs() {
local TMP_TAR
local CACHE_FILE
CACHE_FILE=$(basename $WORKDIR)
pushd $WORKDIR/.. &> /dev/null
TMP_TAR=$(mktemp -d b9-package-XXXXXXXXXXXXX --tmpdir=$TMP)/$CACHE_FILE.tar.xz
tar -cJf $TMP_TAR $CACHE_FILE
gsutil cp $TMP_TAR gs://cloud9_ci_cache
mv $TMP_TAR $TMP/$(basename $CACHE_FILE.tar.xz)
TMP_TAR=$(mktemp b9-package-XXXXXXXXXXXXX --tmpdir=$TMP --suffix=.tar.xz)
tar --transform="s/^$(basename $WORKDIR)/$VERSION/" -cJf $TMP_TAR $(basename $WORKDIR)
gsutil cp $TMP_TAR gs://cloud9_ci_cache/$VERSION.tar.xz
mv $TMP_TAR $TMP/$VERSION.tar.xz
popd &> /dev/null
}