Today I have finally found time to start looking into using Github Pages as a blog.
As a first step, I decided to find a good MIT Licenced theme. Having written a Jekyll theme previously, I am aware of the effort and time that is required to produce a good quality theme.
After a peruse of jekyllthemes.org I found Pixyll to be my favourite with the Pixyll in Action blog post demonstrating all the features I expect to require.
With the theme chosen, I Git cloned locally, changed the origin to my Github Pages repository and pushed. A check of my Github Pages subdomain verified that it really is that simple.
As a next step I decided to start trying to tailor the blog slightly more to my liking, removing example posts / pages and tweaking the SCSS slightly.
After 2 commits to master it became quite obvious to me that I was pushing to see what would happen, mixing staging with production, lengthening the development / editorial cycle time and generally creating a rod for my own back.
I started playing with Jekyll quite some time ago and recalled the “jekyll server –watch” functionality that automatically rebuilds a static site when a file change is detected.
How can I replicate the Github Pages Jekyll environment?
Fortunately there is a pages-gem project, actively maintained with goals compatible with my requirements.
The goal of the GitHub Pages gem is to help GitHub Pages users bootstrap and maintain a Jekyll build environment that most closely matches the GitHub pages build environment.
The last time I investigated using Jekyll to build static sites, getting Jekyll to run locally was a bit of a pain on OSX. With the marching storm that is Docker now easily consumable on Mac and of course modern Linux Kernels, using Docker to build / develop this blog locally seemed the obvious choice.
I looked around for a Jekyll Dockerfile utilizing the pages-gem and found Starefossen docker-github-pages Dockerfile and tried it out.
$ docker run -v "$PWD":/usr/src/app -p "4000:4000" starefossen/github-pages
Unfortunately, this did not work returning the error:
Conversion error: Jekyll::Converters::Scss encountered an error while converting ‘/css/pixyll.scss’: Invalid US-ASCII character “\xC2” on line 7
Fortunately someone else had stumbled across this issue with a recommended resolution the addition of an environment variable to the Dockerfile
ENV LC_ALL C.UTF-8
Consequently I have a very basic Dockerfile included in this repo:
FROM starefossen/github-pages ENV LC_ALL C.UTF-8
I am now able to preview changes as I make them, hopefully with a sufficiently similar environment to that used by Github Pages.
In the future I would like to be able to run a build before deploying, potentially running a spell checker and validating links are still active.
This blog post describes using Travis and html-proofer together, which looks like it might be a good first step…