Přesunuto na GitHub https://github.com/ksp/kurz
https://ksp.mff.cuni.cz/kurz
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
3.0 KiB
118 lines
3.0 KiB
4 years ago
|
#!/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 )
|
||
|
"
|