Apparently my local Jekyll configuration has drifted from Github’s. Yesterday my Jekyll based Github Pages site would no longer build on Github… even though things worked fine locally.
I decided to change the repo to support local compilation and publishing. No more depending on Github to do it for me.
Here’s how I did it.
First, prepare the repo.
git checkout -b source master
git push -u origin source
git checkout master
rm -rf ./*
git add -A
git commit -m "Preparing for self build & publish."
git push origin master
git checkout source
Next, add this bash script to the root of the project.
#!/usr/bin/env bash
jekyll build
if [ $? -ne 0 ]; then
echo "Jekyll build failed!"
exit 1
fi
mkdir /tmp/jekyll
rm -rf /tmp/jekyll/*
cp -R ./_site/* /tmp/jekyll
git checkout master
if [ $? -ne 0 ]; then
echo "Unable to checkout master! Do you have uncommited changes?"
rm -rf /tmp/jekyll
exit 1
fi
rm -rf ./*
cp -R /tmp/jekyll/* ./
git add -A .
git commit -m "Site published on $(date)"
git push origin master
git checkout source
git push origin source
git clean -f -d
rm -rf /tmp/jekyll
echo "Site published successfully."
Finally, start publishing.
git checkout source
./publish
This has the added benefit of providing freedom to use a customized Jekyll setup.
Enjoy!
comments powered by Disqus