Add 2013-03-25-automated-nanoc-deployments
This commit is contained in:
parent
9344bc051a
commit
8b053fd7dc
55
content/posts/2013-03-25-automated-nanoc-deployments.md
Normal file
55
content/posts/2013-03-25-automated-nanoc-deployments.md
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
---
|
||||||
|
title: "Automated nanoc deployments"
|
||||||
|
kind: article
|
||||||
|
created_at: 2013-03-25
|
||||||
|
tags:
|
||||||
|
- nanoc
|
||||||
|
- automation
|
||||||
|
- jenkins
|
||||||
|
- gitlab
|
||||||
|
---
|
||||||
|
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.
|
Loading…
Reference in New Issue
Block a user