Je cherchais une solution d'intégration continue pour Ruby on Rails, mais je ne suis pas trop satisfait des résultats. Je venais d'une boutique .NET qui utilisait CruiseControl.NET et était vraiment gâté par sa facilité d'utilisation et son état/rapport riche.
Idéalement, je recherche:
L'intégration évidente de Git/SVN et Test :: Unit
Intégration avec Rake et/ou Capistrano
Une interface web montrant l'état de la build
Notification par e-mail des builds ayant échoué.
Notification sur le bureau (potentiellement via Growl)
API REST pour les états de build
Framework de plugin pour exécuter d'autres outils d'analyse de code et rapporter les résultats dans l'interface utilisateur
Je viens de passer en revue les options ici et je pensais les regrouper à la fin de 2011.
Après une expérience de mort imminente qui a laissé le lien vers site Web avec des informations obsolètes et abattu le site de démonstration, ce projet a une spark de vie à nouveau. Mais la documentation n'a pas évolué, et beaucoup, beaucoup de les étapes du tutoriel sont tout simplement cassées ; J'ai dû changer les références aux gemmes, construire des choses hors bande, puis Je n'arrivais toujours pas à le faire fonctionner .
Dead simple : vous venez de le télécharger, exécutez une ligne de commande pour ajouter votre projet (il n'y a pas d'interface utilisateur pour ce faire), et exécutez l'application Rails. Mais il n'y a pas d'interface utilisateur pour modifier votre projet non plus, et il n'y a pas pas une véritable intégration avec les artefacts de build en plus d'afficher des liens vers ceux-ci: vous n'obtenez aucun graphique de tests exécutés, aucune ligne de tendance, etc. J'ai également dû ajuster le routes.rb
fichier pour que la liaison de code fonctionne (le resources :projects
la ligne doit se déplacer sous tous les autres itinéraires non définis par défaut).
Cela a l'air génial , mais l'échelle de rémunération semble hors de propos. 3 agents gratuits et lorsque vous êtes dépendant, vous devez dépenser des centaines de dollars. Les versions personnelles ont fière allure, mais n'ont pas le budget .
Ceci est un Java fidèle et il est chargé avec mille options , donc le L'interface utilisateur est source de confusion et c'est une corvée pour configurer vos projets . Mais une fois que vous l'avez configuré, vous obtenir un beaucoup de plugins qui peuvent tirer de presque n'importe où, exécuter presque tout et rapporter presque tout. Le programme d'installation d'OS X pointe Jenkins sur /Users/Shared/Jenkins/Home
mais ne parvient pas à créer ce répertoire ou chown
à daemon
(qui est utilisé par défaut, et vous devez passer à un nouvel utilisateur jenkins
pour pouvoir configurer GitHub l'intégration).
Je n'ai pas vraiment essayé ces derniers, mais j'ai pensé mentionner pourquoi:
Nous sommes allés avec Jenkins , mais je souhaite vraiment que l'une des solutions plus légères ait fonctionné.
Que diriez-vous CruiseControl.rb ?
Même foule qui a fait CruiseControl
(thinkworks) et écrit en Ruby
. Très facile à utiliser Rake
pour intégrer vos autres outils, et peut utiliser la gemme Ruby-growl pour vos notifications.
Vous pouvez également envisager Hudson . Il est conçu pour être utilisé avec les projets Java bien qu'il existe une grande sélection de plug-ins, y compris la prise en charge de Ruby et Rake. Il a un site Web très utile interface et prend en charge les notifications par e-mail ainsi que de nombreuses autres (comme Twitter ou les lampes géantes d'ours).
La communauté est également très active et il y a eu plusieurs articles sur la connexion de Hudson avec Selenium que vous pourriez être utile pour tester Rails applications côté navigateur).
Un autre aperçu est Team City qui est gratuit pour les petits projets et les équipes (y compris commerciales). J'aime vraiment Team City et je l'ai déjà utilisé pour d'autres projets, mais actuellement nous utilisons Mercurial pour le contrôle des sources et le support de Team City était un peu trop bêta lorsque nous le pensions.
Je suis passé de CruiseControl.net à Team City et j'ai été absolument choqué par l'amélioration. Je suis partisan d'Hudson cependant en raison de ses fonctionnalités similaires et de sa communauté très active.
Circle est un service CI avancé pour Rails (et d'autres applications Web). À partir de votre liste, il prend en charge les éléments suivants:
Joel et moi avons passé un moment à en discuter sur le podcast Stackoverflow - regardez-le !
(modifier) Avertissement: Paul Biggar a fondé Circle comme il l'indique dans son profil Stackoverflow
Semaphore est une nouvelle application CI hébergée pour Ruby et Rails apps. Elle s'intègre à GitHub, ne nécessite aucune configuration et a un simple UI.
Il y avait un manque de développement sur Drone.io, donc je suis passé à Codeship et j'aime vraiment ça. Il est activement développé et amélioré, a un excellent design et est très rapide. De plus, pour le niveau inférieur, il est en fait gratuit (jusqu'à 100 versions par mois), donc il a fini par être moins cher que Drone.io.
Je viens de configurer notre principale Ruby sur Rails application avec http://drone.io/ . C'était un morceau de gâteau et il a une excellente interface. Je dirais qu'il vaut la peine de vérifier si vous recherchez une solution hébergée simple .
Travis CI est devenu populaire dans le monde Ruby: http://travis-ci.org/
Découvrez Tddium . Tddium prend en charge l'intégration continue, le déploiement et les tests interactifs des applications Ruby. Il fournit un environnement géré avec prise en charge de Selenium, Headless Webkit et Solr. Il héberge des instances Postgres, MySQL, Mongo et Redis en direct Et il parallélise automatiquement les grandes suites de tests.
cruisecontrol.rb serait alors le match parfait.
Comme un certain nombre de personnes, j'étais un grand fan de cruisecontrol.rb, mais j'ai récemment changé mes projets en Integrity .
Léger et facile à installer (un peu comme cc.rb), mais avec une interface plus agréable.
BigTuna - écrit en Ruby, utilise Rails et utilise lui-même comme CI.
Vous pouvez donner Codeship un tour et voir si cela fonctionne pour vous (je suis l'un des fondateurs)
Intégration et déploiement continus basés sur le cloud (avec support spécial Heroku)
Les quatre premiers de vos articles sont déjà implémentés et fonctionnent bien pour un certain nombre d'entreprises
Nous travaillons également sur ces fonctionnalités:
Fais le toi-même. Écrivez un script bash pour exécuter des tests, puis exécutez une procédure de déploiement si les tests réussissent. Besoin de notifications? Tirez-vous un e-mail en clair sur le succès/l'échec. Besoin d'ordonnanceur? Cron. C'est 0 $/mois et vous aurez une idée de ce que vous faites. Je ne vois pas comment le fait de payer 40 $/mois à quelqu'un m'aiderait à le faire de manière plus efficace.
Considérez par exemple: mon déploiement échoue en raison d'un pipeline d'actifs mal configuré (les actifs ne parviennent pas à précompiler). Cela ne va pas être pris avec des tests unitaires, fonctionnels, d'intégration, de régression ou tout autre test. Cette erreur ne sera pas détectée par CI. Le temps que je passerais à écrire un script bash est probablement inférieur au temps que je passerais à configurer un environnement CI, et je m'économiserai 40 $/mois.
Juuuuuust jetant mes deux sous dans la discussion; )
Personne ici n'a mentionné le bambou d'Atlassian. Il y a un bel article de type tutoriel sur Ruby on Rails CI utilisant Bamboo:
http://blogs.atlassian.com/news/2009/05/bamboo_customer_8.html
L'intégrité semble être une excellente solution. Le déploiement sur heroku est un jeu d'enfant: http://elabs.se/blog/7-continuous-integration-testing-for-Ruby-on-Rails-with-integrity http://integrityapp.com
J'aime seulement CI joe, j'ai eu des problèmes avec tout le reste, CI Joe est le minimum absolu pour faire le travail, super agile et fiable. La source Hudson est horrible et l'interface utilisateur ne me plaît pas.
Run Code Run pourrait être ce dont vous avez besoin.
Modifier: lien supprimé car il ne fait plus référence à l'ancien site Run Code Run.
Et puis, il y a CI Joe :
C'est comme une vieille camionnette rouillée: elle peut être malodorante et dégoûtante, mais elle fait le travail.
Nous l'utilisons au quotidien.
Je viens de publier une application d'intégration continue très simple pour RubyOnRails + SVN/GIT. Vous devriez peut-être essayer:
http://github.com/felipegiotto/Inotegration/tree/master
J'ai pris quelques idées d'outils de mesure et de test et, après avoir essayé certains outils CI et n'aimant personne, j'ai décidé de créer le mien, sans avoir besoin de construire de gros fichiers XML ou toute autre configuration. Exactement comme Rails a été fait pour être.
Si vous le souhaitez, veuillez m'envoyer des commentaires ..
Meilleures salutations,
Felipe Giotto.
L'exécution de CI après chaque validation semble plutôt coûteuse si vous souscrivez à la philosophie de la "validation fréquente". Que diriez-vous d'exécuter un cronjob simple toutes les quelques heures et d'envoyer les résultats par e-mail à une liste de diffusion de développeurs?
Vous devriez également envisager de consulter CloudMunch. Cela fournit une plate-forme polyglotte pour vous permettre d'avoir différentes langues dans votre base de code, avec un riche ensemble de métadonnées de construction.
Je viens de configurer un Hudson/Jenkins pour cela. La gemme ci_reporter peut aider à formater la sortie JUnit, ce qui est attendu par Hudson, et Hudson a un plugin Rails, donc je peux voir la couverture rcov, les rapports de test, Rails stats et encore plus.