Setting up post-receive hook
Recently, we switched to using Jekyll for our WnCC website.
This post will essentially help to configure post-receive hooks on your local repository.
Using git hooks you no longer need to manually deploy the website on your server. Everytime you push to git, a remote server handles the deployment.
Setting up the post-receive hook is done as follows:
laptop$ ssh deployer@example.com
server$ mkdir myrepo.git
server$ cd myrepo.git
server$ git --bare init
server$ cp hooks/post-receive.sample hooks/post-receive
server$ mkdir /var/www/myrepoNext, add the following lines to hooks/post-receive and be sure Jekyll is installed on the server:
GIT_REPO=$HOME/myrepo.git
TMP_GIT_CLONE=$HOME/tmp/myrepo
PUBLIC_WWW=/var/www/myrepo
JEKYLL = /path/to/jekyll
git clone $GIT_REPO $TMP_GIT_CLONE
$JEKYLL build -s $TMP_GIT_CLONE -d $PUBLIC_WWW
rm -Rf $TMP_GIT_CLONE
exitFinally, run the following command on any users laptop that needs to be able to deploy using this hook:
laptops$ git remote add deploy deployer@example.com:~/myrepo.gitEverytime you push, make sure you push it to remote server as well
laptops$ git push deploy masterIn case, you wish multiple users to be able to deploy You need to run the following command on the other laptops:
laptops$ git remote add deploy deployer@example.com:~/myrepo.gitOfcourse goes without saying, each user should deploy to remote server using:
laptops$ git push deploy masterIn case you are maintaining the repository on github as well, make sure to sync the repositories.
So, your git push could look as follows:
laptops$ git push deploy master
laptops$ git push origin master