Martin Mares
09c60434fa
Recyklovány některé části instalační mašinerie KSP webu, zejména máme společné zamykání.
117 lines
3 KiB
Bash
Executable file
117 lines
3 KiB
Bash
Executable file
#!/bin/bash
|
|
# Based on ksp/web/tools/deploy
|
|
set -e
|
|
|
|
die ()
|
|
{
|
|
echo >&2 "ERROR: $1"
|
|
exit 1
|
|
}
|
|
|
|
get_git_branch ()
|
|
{
|
|
CURRENT_BRANCH=$(git symbolic-ref --short HEAD) || die "HEAD is not a symbolic ref. Your head is probably detached."
|
|
}
|
|
|
|
check_git_pushed ()
|
|
{
|
|
if ! $(git diff --quiet) || ! $(git diff --cached --quiet) ; then
|
|
if [ -n "$KSP_FORCE_DIFF" ] ; then
|
|
echo "## WARNING: There are uncommitted changes, but KSP_FORCE_DIFF makes us proceed."
|
|
else
|
|
git status
|
|
die "There are uncommitted changes. Set KSP_FORCE_DIFF=1 if you really want to install."
|
|
fi
|
|
fi
|
|
if [ $(git rev-parse $CURRENT_BRANCH) != $(git rev-parse origin/$CURRENT_BRANCH) ] ; then
|
|
if [ -n "$KSP_FORCE_PUSHED" ] ; then
|
|
echo "## WARNING: There are unpushed changes, but KSP_FORCE_PUSHED makes us proceed."
|
|
else
|
|
die "There are unpushed changes. Set KSP_FORCE_PUSHED=1 if you really know what you are doing."
|
|
fi
|
|
fi
|
|
}
|
|
|
|
check_git_branch ()
|
|
{
|
|
local NEED=$1
|
|
if [ $CURRENT_BRANCH != $NEED ] ; then
|
|
if [ -n "$KSP_FORCE_BRANCH" ] ; then
|
|
echo "## WARNING: Not on branch $NEED, but KSP_FORCE_BRANCH makes us proceed."
|
|
else
|
|
die "Public web must be installed from branch '$NEED'. Set KSP_FORCE_BRANCH=1 if you really want to install from '$CURRENT_BRANCH'."
|
|
fi
|
|
fi
|
|
}
|
|
|
|
QUICK=
|
|
if [ "$1" = "--quick" ] ; then
|
|
QUICK=1
|
|
shift
|
|
fi
|
|
|
|
if [ $# -ne 1 -a $# -ne 2 -o "${1:0:1}" = "-" ] ; then
|
|
echo >&2 "Usage: $(basename $0) [--quick] <instance> [<commit>]"
|
|
exit 1
|
|
fi
|
|
INST="$1"
|
|
COMMIT="$2"
|
|
get_git_branch
|
|
|
|
case "$INST" in
|
|
test) REMOTE_LOGIN="ksp-web@gimli.ms.mff.cuni.cz"
|
|
REMOTE_PATH=/akce/ksp/testweb
|
|
;;
|
|
pub) REMOTE_LOGIN="ksp-web@gimli.ms.mff.cuni.cz"
|
|
REMOTE_PATH=/akce/ksp/web
|
|
check_git_branch master
|
|
;;
|
|
*) die "Unknown web instance $INST."
|
|
;;
|
|
esac
|
|
|
|
if [ -z "$COMMIT" ] ; then
|
|
COMMIT=$(git rev-parse HEAD)
|
|
echo "## Installing branch $CURRENT_BRANCH (head $COMMIT) to web instance $INST"
|
|
else
|
|
COMMIT=$(git rev-parse $COMMIT)
|
|
echo "## Installing commit $COMMIT to web instance $INST"
|
|
fi
|
|
check_git_pushed
|
|
if [ -n "$QUICK" ] ; then
|
|
echo "## WARNING: This is an incremental build"
|
|
fi
|
|
|
|
# XXX: Beware of quotes!
|
|
ssh -t $REMOTE_LOGIN "
|
|
set -e
|
|
cd $REMOTE_PATH
|
|
echo '## Obtaining installation lock'
|
|
# XXX: Keep in sync with ksp/tools/deploy
|
|
if ! lockfile -1 -r10 $REMOTE_PATH/install.lock ; then
|
|
echo '## Failed to obtain $REMOTE_PATH/install.lock, please check manually'
|
|
exit 1
|
|
fi
|
|
install_unlock () {
|
|
if [ -f $REMOTE_PATH/install.lock ] ; then
|
|
echo '## Releasing installation lock'
|
|
rm -f $REMOTE_PATH/install.lock
|
|
fi
|
|
}
|
|
trap install_unlock SIGINT SIGHUP EXIT
|
|
if [ -d kurz-src ] ; then
|
|
echo '## Updating from repository'
|
|
( cd kurz-src && git fetch )
|
|
else
|
|
echo '## Cloning repository'
|
|
git clone --quiet --no-checkout git@gitea.ks.matfyz.cz:KSP/graf-uloh.git kurz-src
|
|
fi
|
|
echo '## Checking out files'
|
|
if [ -z '$QUICK' ] ; then
|
|
rm -rf kurz-src/*
|
|
( cd kurz-src && git checkout --quiet $COMMIT && git reset --hard )
|
|
else
|
|
( cd kurz-src && git checkout --quiet $COMMIT )
|
|
fi
|
|
( cd kurz-src/frontend && tools/deploy-local )
|
|
"
|