Vašek Šraier
4 years ago
2 changed files with 141 additions and 0 deletions
@ -0,0 +1,117 @@ |
|||
#!/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 ) |
|||
" |
@ -0,0 +1,24 @@ |
|||
#!/bin/bash |
|||
# This script is the bottom half of tools/deploy. It runs locally at Gimli |
|||
# in /akce/ksp/<instance>/kurzy-src/frontend, where the current source tree is already |
|||
# checked out. It builds and installs everything. |
|||
|
|||
set -e |
|||
|
|||
# Locale is set explicitly here, for its passing over SSH is unreliable. |
|||
unset -v $(locale | cut -d'=' -f1) # unset locale; LC_ALL overrides all |
|||
export LANG=C # default for LC_* except LC_ALL |
|||
export LC_CTYPE=cs_CZ.UTF-8 |
|||
|
|||
echo "## Building the course" |
|||
nice yarnpkg install --frozen-lockfile |
|||
nice yarnpkg build |
|||
|
|||
DEST=../../static/kurz |
|||
mkdir -p $DEST |
|||
|
|||
for f in public/build/bundle.{css,js} ../tasks.json ; do |
|||
b=$(basename $f) |
|||
cp $f $DEST/$b.new |
|||
mv $DEST/$b.new $DEST/$b |
|||
done |
Reference in new issue