Docker container for automatically rebuilding a Jekyll sites
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Dockerfile
README.md
jekyllbuilder.rb

README.md

Jekyllbuilder Dockerfile

This repository contains a daemon that will continuously listen for Git push events and rebuild a Jekyll site whenever the corresponding Git repository is updated.

The notifications of Git updates are expected to come from an AMQP server (e.g RabbitMQ). These messages can be generated from a post-receive hook in the Git repositories. I am using Gitolite which allows one to define a default post-receive hook. See the post-receive in jonls/amqp-post-receive for an example.

When an update to the Git repository is detected it is cloned and Jekyll is used to generate the final site. The clone is done from a local repository in /git. The final site is generated in /www.

Usage

$ docker run -d --link rabbitmq:amqp \
      -e "JEKYLL_REPO=<jekyll-website-repo-name>" \
      -v <www-dest>:/www \
      -v <local-git-repos>:/git:ro \
      jonls/jekyllbuilder

The rabbitmq would be another container running RabbitMQ with the port 5672 exposed. A prebuilt rabbitmq container can be found in the Docker Hub Registry.

ToDo

  • Listen for multiple Git repositories
  • Specify destination for each build
  • Specify Git branch to build
  • Optionally clone public remote repository instead of local