Langages/Ruby/Rails/Tests/ContinuousIntegration

Un article de Agora2ia.


Sommaire

Intégration Continue (Continuous Integration)

Quelques solutions

Différents outils :


Solution(s) hébergée(s) :

  • RunCodeRun : Hosted Continuous Integration and Developer Tools for Ruby and Rails


CruiseControl.rb

Installation / configuration

IMPORTANT : Sous Windows, d'après le site même de CruiseControl.rb, il n'est pas compatible avec la version 1.8.6-26 de Ruby. Il faut donc :

  • Installer la version 1.8.5-24 de Ruby
  • Puis installer Rails : gem install rails -y
  • Puis mettre à jour gem : gem update --system


  • Télécharger l'archive sur le site
  • Décompresser dans un répertoire que l'on referencera CCRB
  • Ajouter votre projet en tapant depuis le répertoire CCRB (ATTENTION : pour que le build fonctionne dans CruiseControl.rb, l'URL indiquée doit se terminée par le nom du répertoire qui contient l'application Rails):
ccrb> ./cruise add MyProject -u svn://my.company.com/myproject/trunk/rails [--username user --password pwd]
  • Puis lancer CruiseControl.rb toujours depuis le répertoire CCRB :
ccrb> ./cruise start

RSpec

Par défaut, CruiseControl.rb exécute les tests unitaires. Il faut donc le configurer pour qu'il exécute les tests RSpec.

Editer le fichier Rafefile en joutant la tâche cruise, celle qui est exécuté par CruiseControl.rb :

desc "Task to do some preparations for CruiseControl"
task :prepare do
    RAILS_ENV = 'test'
end

desc "Task for CruiseControl.rb"
task :cruise => [:prepare, "db:migrate", "spec"] do
end

On peut également ajouter la génération du rapport RSpec et sa mise à disposition dans la liste des artifacts disponibles sur le dashboard du build. Cela se fait au moyen de la variable d'environnement positionnée par CruiseControl.rb, CC_BUILD_ARTIFACTS  :

desc "Generation of the RSpec report"
task :spec_report do
    out = ENV['CC_BUILD_ARTIFACTS']
    sh "spec -fh:#{out}/spec.html spec"
end

Le fichier spec.html sera automatiquement accessible sur la page du build dans la partie "Custom Build Artifacts".

Ne pas oublier d'ajouter cette nouvelle tâche dans la liste des sous-tâches de la tâche racine cruise :

desc "Task for CruiseControl.rb"
task :cruise => [:prepare, "db:migrate", "spec", :spec_report] do
end

Selenium

Configuration de CruiseControl.rb pour fonctionner avec Selenium.


Notification : CCMenu et Growl