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 !