Monday November 19 2018
The corporate solution to this is “Use Jenkins” or some other bloated third
party piece of software instead of the simple straightforward solution of using
a small shell script and
git’s powerful built in hooks.
The easiest way to show you how this works is with a couple of examples.
You have a git repository in
contains your website’s source code or markdown files. You want this to be
automatically updated to the latest commit on master every time you push.
The easiest, and most straightforward method of making this work is as follows:
$ cd /var/www/htdocs/mitchriedstra.com/site $ git config receive.denyCurrentBranch "ignore" $ ed hooks/post-receive a #!/bin/sh set -e # Note that you may want to adjust your path to include your custom binaries PATH="$HOME/bin:$PATH" # Requires `git config receive.denyCurrentBranch "ignore"` in order to be useful unset GIT_DIR unset GIT_WORK_TREE cd .. git reset --hard HEAD bin/render .. . w q $ chmod +x hooks/post-receive $
And that’s about it. This assumes the work is done on the remote host in which you’re deploying to.
If you really need me to hold your hand setting up the local repository:
$ git clone firstname.lastname@example.org:~/site site
And that’s about it. All you have to do is commit to your local branch
git push to see them on the server.
A few things you might not know if you’re new to
git and haven’t read the
GIT(1) Git Manual GIT(1) NAME git - the stupid content tracker