Déploiement d'un blog jekyll avec jenkins
Chez af83, nous avons pour habitude d'utiliser jenkins pour l'intégration continue. Aussi, nous avons décidé de l'utiliser aussi pour ce blog. À chaque commit sur la branche master, on lance un build qui consiste à vérifier que toutes les pages sont conformes aux standards du w3c, puis à mettre en ligne les fichiers générés.
Pour cela sur jenkins on lance une premiere étape de validation avec
rake:validate qui build le blog et regarde si toutes les pages sont valides
par le w3c grace à la gem
validate-website :
require 'yaml'
@config = YAML.load_file(File.join(File.dirname(__FILE__), '_config.yml'))
desc 'validate _site with validate website'
task :validate => :build do
Dir.chdir('_site') do
system("validate-website-static --site '#{@config['url']}/' --quiet")
exit($?.exitstatus)
end
end
desc 'build static _site'
task :build do
system('bundle exec jekyll')
end
Avec l'exit, on stop le déploiement du blog s'il y a eu une erreur de validation. Le build échoue, nous sommes notifiés et nous pouvons corriger le problème.
Dans le cas où tout est valide, on déploie avec un rsync rake rsync:live :
namespace :rsync do
@rsync_options = "-avz --progress --human-readable --delete #{@config['destination']}/ #{@config['deploy']['user']}@#{@config['deploy']['host']}:#{@config['deploy']['destination']}"
desc "--dry-run rsync"
task :dryrun => :build do
system("rsync --dry-run #{@rsync_options}")
end
desc "rsync"
task :live => :build do
system("rsync #{@rsync_options}")
end
end
Voilà, vous savez maintenant comment ce billet a été mis en ligne !
