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
.
$ 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.