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 )
 | |
| "
 |