web-dev-qa-db-fra.com

Intégration continue pour Ruby on Rails?

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

149
Jim Fiorato

Je viens de passer en revue les options ici et je pensais les regrouper à la fin de 2011.

Intégrité

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 .

Cruise Control.rb

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).

TeamCity

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 .

Jenkins (née Hudson )

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).

Autres

Je n'ai pas vraiment essayé ces derniers, mais j'ai pensé mentionner pourquoi:

  • CI Joe veut posséder le dépôt GitHub plus que je ne le veux, et ses créateurs ne l'utilisent même pas; ils sont sur Jenkins.
  • Cerberus semble parfaitement petit mais n'a pas d'interface utilisateur et ne publie pas automatiquement les artefacts de construction où les autres peuvent les voir.
  • BigTuna semble être un clone CruiseControl.rb sans le support (déjà minime) de la communauté.
  • Bamboo semble vraiment bien si vous utilisez JIRA et BitBucket, mais nous n'utilisons ni l'un ni l'autre. Il se déploie, mais nous avons déjà ceux installés à Capistrano.

Le choix

Nous sommes allés avec Jenkins , mais je souhaite vraiment que l'une des solutions plus légères ait fonctionné.

83
TALlama

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.

41
craigb

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.

27
Julian

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:

  • Intégration Git et Test :: Unit ( également intégrations RSpec, Cucumber, Jasmine, Konacha et prend en charge des commandes de test supplémentaires arbitraires =)
  • Intégration avec Rake et/ou Capistrano ( utilise Rake pour exécuter des commandes et configurer des bases de données, prendre en charge le déploiement continu à l'aide de Capistrano ou Heroku, ou quoi que ce soit vraiment)
  • Une interface Web affichant l'état de la construction
  • Notification par e-mail des builds ayant échoué.
  • Notification du bureau ( via CCMenu/CCTray)
  • 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 ( nous pouvons exécuter des commandes arbitraires et prendre en charge leur état dans le cadre de la construction)

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

14
Paul Biggar

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.

8
marko

Mise à jour février 2015

Codehip

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.

Réponse originale

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 .

8
Joshua Pinter

Travis CI est devenu populaire dans le monde Ruby: http://travis-ci.org/

7
Vanuan

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.

7
Jay Moorthi

cruisecontrol.rb serait alors le match parfait.

http://cruisecontrolrb.thoughtworks.com/

6
madlep

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.

6
csexton

BigTuna - écrit en Ruby, utilise Rails et utilise lui-même comme CI.

5
oma

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

  • 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é.

Nous travaillons également sur ces fonctionnalités:

  • 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
5
Florian Motlik

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; )

3
Victor Piousbox
3
Kirill Maximov

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

3
Nowaker

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

3
avocade

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.

1
Brent Greeff

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.

1
Todd Stout

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.

1
Hakan Ensari

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.

0
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?

0
JasonOng

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.

0
Prasanna

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.

0
Gabor Garami