about summary refs log blame commit diff stats
path: root/tools/conf/srv/gitolite/deployweb
blob: ca4dce84b98b10c86c9969949c2a5827819ab72f (plain) (tree)









































































                                                                      
#!/bin/sh

######################################################################
#
# Put this file in;
# /usr/share/gitolite/hooks/deployweb
#
DIR_WWW=/srv/www/
DEPLOY_BRANCH=master
TARGET_USER=www

for DP_FILE in /srv/gitolite/deploy/*
do

	if [ ! -f "$DP_FILE" ]; then
		# Nothing to do ;)
		#echo "Deploy: invalid DP_FILE"
		exit 1;
	fi

	# Get project name
	PROJECT=$(basename "$DP_FILE")
	echo "Deploy: PROJECT=${PROJECT}"

	# Get git repository path and verify if exists
	DIR_GIT=$(head -n 1 $DP_FILE)
	if [ ! -d "$DIR_GIT" ]; then
		echo "Deploy: invalid DIR_GIT: ${DIR_GIT}"
		exit 2;
	fi
	echo "Deploy: DIR_GIT=${DIR_GIT}"

	# Get directory to deploy and verify if exists
	GIT_WORK_TREE=${DIR_WWW}${PROJECT}/
	if [ ! -d "$GIT_WORK_TREE" ]; then
		echo "Deploy: invalid GIT_WORK_TREE: ${GIT_WORK_TREE}"
		echo "Deploy: creating directory: $GIT_WORK_TREE}"
		mkdir -p $GIT_WORK_TREE
	fi
	echo "Deploy: GIT_WORK_TREE={$GIT_WORK_TREE}"

	# Deploy (checkout)
	echo "Deploy: starting git checkout"

	git --git-dir=$DIR_GIT \
		--work-tree=$GIT_WORK_TREE \
		checkout -f $DEPLOY_BRANCH


	# Fix ownership and permissions
	echo "Deploy: fixing permissions"

	echo "Deploy: setting owner: chown -R ${TARGET_USER}"
	chown -R ${TARGET_USER}:${TARGET_USER} $GIT_WORK_TREE

	echo "Deploy: setting directory permissions: chmod 755"
	find $GIT_WORK_TREE -type d -print0 | xargs -0 chmod 755

	echo "Deploy: setting file permissions: chmod 644"
	find $GIT_WORK_TREE -type f -print0 | xargs -0 chmod 644

	# Call project script
	if [ -f "${GIT_WORK_TREE}/deploy.sh" ]; then
		echo "Deploy: calling ${GIT_WORK_TREE}deploy.sh"
		cd ${GIT_WORK_TREE}
		sudo -u ${TARGET_USER} sh ${GIT_WORK_TREE}deploy.sh
	fi

	# Done with project
	echo "Deploy: removing deploy file="$DP_FILE
	rm $DP_FILE

	exit 0;
done