Blake Smith

create. code. learn.

»

git push to publish with jekyll

This blog uses a push to publish model with Jekyll and Github Pages. You can see a write-up of this process right here.

I wanted to implement a similar sort of feature with another Jekyll powered site I’m working on without having to use Github pages. Luckily for me after a bit of googling I found that Ryan Briones had already thought about it and had a working solution.

I recommend giving his article a read. I was able to follow his steps and do the same thing for my project. I did a slight cleanup of his post-receive script which I wanted to post here.

Put this script inside the source (non-local) repository repository that you are publishing to. When it receieves a push, it will execute the post-receive bash script and explode and compile the jekyll source.

 
#!/bin/bash

GITSOURCE=/home/user/pubgit/jekyll-site.git
SOURCE=/home/user/public_html/jekyll-site/source
PUBLIC=/home/user/public_html/jekyll-site/public

git --bare --git-dir=$GITSOURCE archive master | tar xC $SOURCE 
jekyll $SOURCE $PUBLIC 

Variable definitions (replace these with your own setup):

  • GITSOURCE - the source git repository
  • SOURCE - directory where the jekyll source is exploded to after a push
  • PUBLIC - compiled jekyll files. Point your web server to this directory

Thanks again to Ryan Briones for this recipe. Happy Jekylling!


about the author

Blake Smith is a Principal Software Engineer at Sprout Social.