Jekyll / Octopress

La galaxie GitHub a généré un nombre d’outil impressionnant. Parmi ceux-ci Jekyll est de plus en plus utilisé pour une publication web simple, statique et rapide. Cet outil, développé et utilisé au sein de GitHub pour la gestion de ses Pages, a fédéré de nombreux développeurs et propose maintenant une interface vers la majorité des outils phares du web.

A l’opposé des CMS lourds, le développement d’un blog sous Jekyll se décompose en deux phases:

  • La gestion du contenu «statique». Les textes sont rédigés dans le format Markdown dans votre editeur préféré. Format qui outre sa simplicité permet de se concentrer sur l’écriture du fond et à déléguer la forme à Jekyll.
  • La gestion du contenu «dynamique». Nous faisons ici appel à des outils externes intégrés dans Jekyll. Par exemple, nous pourrons déléguer la gestion des commentaires à Disqus ou Juvia. Twitter est directement intégré via un plugin.

Cependant démarrer un blog en quelques clics est plus difficile avec Jekyll. En effet celui-ci est «livré» sans thèmes et l’intégration avec les différents outils externes doit être effectuée manuellement. C’est pour répondre à ces difficultés que Brandon Mathis a développé le framework Octopress qui fournit une «surcouche» à Jekyll supprimant la majorité des détails techniques liés à la configuration de Jekyll.

Prérequis

Jekyll est basé sur l’utilisation de GIT et Ruby. Octopress nécessite également RVM (Ruby Version Manager) et une version récente de Ruby (1.9.2 qui sera installée via RVM).

Installation de RVM

$ curl -L get.rvm.io | bash -s stable

Nous ajoutons RVM à notre shell

Pour bash

$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile
$ source ~/.bash_profile

Pour zsh

$ echo '[[ -s $HOME/.rvm/scripts/rvm ]] && source $HOME/.rvm/scripts/rvm' >> ~/.zshrc
$ source ~/.zshrc
  1. Installation de Ruby 1.9.2 et de la dernière version de RubyGems
$ rvm install 1.9.2 && rvm use 1.9.2
$ rvm rubygems latest

Installation

$ git clone git://github.com/imathis/octopress.git octopress
$ cd octopress    # Il faut ici confirmer qu'il faut faire confiance au fichier .rvmrc
$ ruby --version  # --> Ruby 1.9.2

Nous installons ensuite les dépendances

$ gem install bundler
$ bundle install

Et finalement nous installons le thème Octopress par défaut

$ rake install

L’ensemble des commandes rake doit être précédé de la commande bundle exec dans le cas ou plusieurs installation de Ruby coexistent.

En cas de difficultés pour l’installation de ruby/rvm, le lien suivant explique plus en détails la procédure en cas de problèmes de dépendances Ubuntu, Ruby, RVM, Rails and You.

Déploiement sur GitHub

Les pages de GitHub utilisent la branche master comme équivalent du repertoire public ou www d’un serveur web classique. Nous développons donc le site sur la branche source et publions le contenu généré sur la branche master.

Octopress permet de gérer cette configuration rapidement:

$ rake setup_github_pages

Ce script demandera en particulier l’url du repository (par exemple git@github.com:user/site.github.com.git). Il suffit ensuite de lancer les commandes suivantes:

$ rake generate # génération des pages statiques
$ rake deploy   # push sur la branche master de github à partir du répertoire _deploy

Pour publier vos modifications sur la branche source, il faut utiliser la commande:

$ git add .
$ git commit -a -m "message"
$ git push origin source

Utilisation

Octopress dipose d’une commande facilitant la création d’une page:

$ rake new_post["title"]
$ rake new_post[\"title\"] # avec zsh