kopia lustrzana https://github.com/c9/core
commit
f33299be76
26
b9/b9
26
b9/b9
|
@ -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
|
||||
;;
|
||||
|
|
|
@ -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)"
|
||||
}
|
|
@ -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)
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
source $C9_DIR/plugins/c9.docker/d9/_testing.sh
|
||||
|
||||
b9_check() {
|
||||
echo "Running B9 tests"
|
||||
_do_check_package
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue