Taking a webhook approach to building sites in Jekyll. Kind of like jekyll-hook and others, but with a single binary because Go is nice.
$ go get byparker.com/go/jekyll-build-server
$ $GOPATH/bin/jekyll-build-server -owner="your-username-or-org"
Daemonize it or put it in a screen session if you want.
Add a webhook to this server's POST /_github
endpoint.
Each request will be checked and only build if on the master
branch and if the repo has the proper owner. It will clone
the repo into ${src}/${repo_nwo}
and build it into ${dest}/${repo_nwo}
You'll need:
- Go
- Ruby
- Bundler
- Git
- A public-facing IP or domain name
All the configuration happens in flags:
-owner="your-username-or-org"
– the string your repos' full names (e.g. "parkr" in "parkr/jekyll-build-server") must start with in order to be authorized to be built-bind=":9090"
– the port/host to bind the server to-src="/tmp"
– the directory to clone the sources into-dest="/var/www"
– the base directory to put built sites into-db="localhost@/builds"
– the connection string where your builds are stored. optional
Run jekyll-build-server -h
to learn more at any time.
I serve my static files with nginx. A very simple HTTP server might look like this:
server {
listen 80;
server_name example.com;
root /var/www/parkr/example.com;
error_page 404 = /404.html;
location / {
try_files $uri $uri.html $uri/index.html index.html;
}
}
This would serve the static files built for the parkr/example.com
repo at example.com:80
.
... that's really it!