55 lines
2.2 KiB
Markdown
55 lines
2.2 KiB
Markdown
+++
|
||
date = "2013-03-25"
|
||
title = "Automated nanoc deployments"
|
||
tags = ["nanoc", "automation", "jenkins", "gitlab"]
|
||
description = "In my eternal quest to have a nice, fast and fun to use blogging platform for ariejan.net, I've switched over to Nanoc – a static site generator in Ruby."
|
||
slug = "automated-nanoc-deployments"
|
||
+++
|
||
I've migrated _ariejan.net_ from a custom Ruby on Rails application to a statically generated site with Nanoc.
|
||
|
||
Publishing my site now goes like this:
|
||
|
||
1. Write stuff in Markdown
|
||
2. Commit and push
|
||
3. Watch how jenkins builds and publishes the site with nanoc and rsync.
|
||
|
||
## Using nanoc
|
||
|
||
Nanoc is a very powerful static site generator. You can use ruby to create helpers, filters and what not. Fancy using Sass, Compass and Haml? No problem!
|
||
|
||
Simply write pages in Haml or Markdown and Nanoc will generate a complete site, including sitemap, robots.txt and RSS feed.
|
||
|
||
Once you've set everything up to your liking, simply run `nanoc compile` and your site is ready.
|
||
|
||
Nanoc also has some nice features to deploy your website through rsync, which will upload (or remove) files on a remote server as necessary.
|
||
|
||
## Automate the crap out of it!
|
||
|
||
I'm a programmer. I like to automate repetitive tasks. So I did.
|
||
|
||
I've setup Jenkins with the RVM plugin and that's all I need to have Jenkins generate and deploy my Nanoc site.
|
||
|
||
Here's the build script I currently use:
|
||
|
||
#!/bin/bash
|
||
export NANOC_ENV=production
|
||
bundle install
|
||
nanoc compile
|
||
nanoc deploy -t public
|
||
|
||
If the compilation fails for some reason, the deployment is cancelled.
|
||
|
||
## Enter gitlab
|
||
|
||
Now I use Gitlab to host tons of private repositories, including the one for _ariejan.net_.
|
||
|
||
I've setup a web hook that will trigger the Jenkins job when new commits are made or pushed.
|
||
|
||
This allows me to quickly edit a file, commit it and Gitlab en Jenkins will make sure the change is compiled and published to _ariejan.net_.
|
||
|
||
## Where to go from here
|
||
|
||
For now, this setup suffices for me. I keep all my posts in version control, and backupped to S3 (by backing up my gitlab repositories). Adding a new story to git is sufficient for it to be published automatically on _ariejan.net_ and in the event something goes wrong with compilation, Jenkins will notify me of the build failure.
|
||
|
||
|