Intégration continue pour Ruby on Rails? [fermé]

149

J'ai cherché une solution d'intégration continue pour Ruby on Rails, mais je n'ai pas été trop satisfait des résultats. Je viens d'une boutique .NET qui utilisait CruiseControl.NET et j'ai été vraiment gâté par sa facilité d'utilisation et son état / rapports riches.

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 construction

  • Notification par e-mail des versions ayant échoué.

  • Notification de bureau (potentiellement via Growl)

  • API REST pour les statuts de construction

  • Framework de plugins pour exécuter d'autres outils d'analyse de code et rapporter les résultats dans l'interface utilisateur

Jim Fiorato
la source
11
Alors, quel est votre choix maintenant, trois ans plus tard?
Andrei
3
Puis-je suggérer circleci.com ?
Paul Biggar

Réponses:

83

Je viens de passer en revue les options ici et j'ai pensé les regrouper fin 2011.

Intégrité

Après une expérience de mort imminente qui a laissé le site Web encore lié avec des informations obsolètes et a mis hors service le site de démonstration, ce projet a de nouveau une étincelle de vie. Mais la documentation n'a pas évolué et de nombreuses étapes du didacticiel sont tout simplement interrompues ; J'ai dû changer les références aux gemmes, construire certaines choses hors du groupe, et puis je ne pouvais toujours pas le faire fonctionner .

Cruise Control.rb

Tout simplement : il vous suffit de le télécharger, d'exécuter une ligne de commande pour ajouter votre projet (il n'y a pas d'interface utilisateur pour le faire) et d'exécuter l'application Rails. Mais il n'y a pas non plus d'interface utilisateur pour éditer votre projet, et il n'y a pas de réelle intégration avec les artefacts de construction mis à part l'affichage de liens vers eux: vous n'obtenez aucun graphique des tests exécutés, aucune ligne de tendance, etc. J'ai également dû ajuster le routes.rbfichier pour obtenir le le code liant fonctionne (la resources :projectsligne doit se déplacer en dessous de toutes les autres routes non par défaut).

TeamCity

Cela a l' air génial , mais l'échelle salariale semble déséquilibrée. 3 agents gratuits, puis lorsque vous êtes dépendant, vous devez distribuer des centaines de dollars. Personal Builds a fière allure, mais n'a pas le budget .

Jenkins (née Hudson )

C'est un pilier de Java et il est chargé de mille options , donc l' interface utilisateur est déroutante et c'est une corvée de configurer vos projets . Mais une fois que vous l'avez configuré, vous obtenez un grand nombre 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 vers /Users/Shared/Jenkins/Homemais ne parvient pas à créer ce répertoire ou chownvers celui-ci daemon(ce qui est utilisé par défaut, et vous devez changer pour un nouvel jenkinsutilisateur afin de pouvoir configurer l'intégration GitHub).

Autres

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

  • CI Joe veut posséder le repo GitHub plus que je ne le souhaite, 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 là où les autres peuvent les voir.
  • BigTuna semble être un clone de CruiseControl.rb sans le soutien de la communauté (déjà minime).
  • Bamboo a l' air vraiment bien si vous utilisez JIRA et BitBucket, mais nous n'utilisons ni l'un ni l'autre. Il se déploie mais nous les avons déjà installés à Capistrano.

Le choix

Nous avons choisi Jenkins , mais j'aurais vraiment aimé qu'une des solutions plus légères ait fonctionné.

TALlama
la source
8
Et les travis?
Vanuan
3
Je travaille sur un projet à source fermée, donc à moins que je ne comprenne mal leur documentation (mal formulée), Travis n'est pas vraiment une option pour nous (ce n'est pas du tout que je leur accorde un accès en écriture à notre projet GitHub). Si j'écrivais des gemmes, je sauterais sur Travis en un instant, mais pas pour les sites Rails réels.
TALlama
2
Pour mémoire, Travis CI va bientôt sortir une version PRO (payante et privée) qui est déjà en bêta. C'est un peu cher pour les petits projets à 129 $ et 249 $ par mois, mais ça vaut le coup d'y jeter un coup d'œil: travis-ci.com
Joshua Pinter
41

Que diriez - vous CruiseControl.rb ?

La même foule qui l'a fait CruiseControl(réflexions) et a écrit Ruby. Très facile à utiliser Rakepour intégrer vos autres outils, et peut utiliser la gemme ruby-growl pour vos notifications.

Craigb
la source
J'ai eu du mal à faire fonctionner cela sur Windows ... ne fonctionnait pas comme annoncé dans la vidéo `` ça ne peut pas être aussi simple '' sur le site pour moi.
Gishu
Je ne serais pas influencé par l'image de marque de thinkworks - jugez-le sur ses mérites.
Dafydd Rees
ce projet n'a été maintenu que récemment et n'a pas publié de nouvelle version depuis 2009 ... mais ça marche ..
Scott Schulthess
3
cruisecontrol est très primitif et très très dépassé.
bragboy
1
Compte tenu des différents événements liés à la sécurité jusqu'à début février (2013), laisser CruiseControl.rb dans sa configuration par défaut (versions Gem, etc.) est inadmissible. J'ai pu le faire fonctionner sous Rails 3.0.20, mais 3.2.11+ va apparemment demander beaucoup plus de travail. À ce stade, je suis très ouvert aux alternatives, avec une liste d'exigences très similaire à celle de Jim Fiorato.
Jeff Dickey
27

Vous voudrez peut-être également envisager Hudson . Il est conçu pour être utilisé avec des projets Java bien qu'il existe une grande sélection de plug-ins disponibles, y compris la prise en charge de Ruby et Rake. Il a une interface Web très utile et prend en charge les notifications par e-mail ainsi que de nombreuses autres (comme Twitter ou les lampes à ours géants).

La communauté est également très active et il y a eu plusieurs articles sur la connexion d'Hudson avec Selenium qui pourraient vous être utiles pour tester les applications Rails côté navigateur.

Un autre regard sur Team City est gratuit pour les petits projets et les équipes (y compris commerciales). J'aime beaucoup Team City et je l'ai déjà utilisé pour d'autres projets, mais actuellement, nous utilisons Mercurial pour le contrôle de code source 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 cependant partial pour Hudson en raison de son ensemble de fonctionnalités similaires et de sa communauté très active.

julien
la source
2
+1 pour TC. De loin le meilleur CI que j'ai jamais vu
Matt Briggs
4
Soyez averti qu'il y a des problèmes politiques pour Hudson à cause, euh, nous appellerons ça des différences créatives, avec Oracle. La plupart des développeurs semblent se déplacer avec le fork qui s'appellera Jenkins; Oracle a du personnel et continuera de soutenir et de développer Hudson.
dondo le
4
Bon point dondo. Pour ceux qui souhaitent suivre le développement continu de Hudson, vous pouvez consulter Jenkins à jenkins-ci.org
Julian
Et voici une comparaison de l'activité de développement Jenkins vs Hudson: ohloh.net/p/compare?project_0=Jenkins&project_1=Hudson
Vanuan
13

Circle est un service CI avancé pour Rails (et autres applications Web). À partir de votre liste, il prend en charge les éléments suivants:

  • Intégration Git et Test :: Unit ( également 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 en utilisant Capistrano ou Heroku, ou quoi que ce soit de vraiment )
  • Une interface Web montrant l'état de la construction
  • Notification par e-mail des versions ayant échoué.
  • Notification de bureau ( via CCMenu / CCTray )
  • API REST pour les statuts de construction
  • Framework de plugins 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 une prise en charge, y compris leur statut dans le cadre de la construction )

Joel et moi avons passé un moment à en discuter sur le podcast Stackoverflow - jetez-y un œil !


(modifier) ​​Avis de non-responsabilité: Paul Biggar a fondé Circle comme il l'indique dans son profil Stackoverflow

Paul Biggar
la source
8

Semaphore est une nouvelle application CI hébergée pour les applications Ruby et Rails. Il s'intègre à GitHub, ne nécessite aucune configuration et dispose d'une interface utilisateur simple.

Marko
la source
Nous utilisons Semaphore dans le cadre de la suite CI et cela fonctionne à merveille. Vous pouvez voir comment il est intégré à d'autres logiciels comme Jasmine et HipChat dans l'un de nos articles de blog . L'op a également mentionné l'utilisation de Capistrano comme outil de déploiement. Nous l'avons utilisé dans le passé, mais c'était trop lent pour nous, nous sommes donc passés à Mina .
denis.arunovic
8

Mis à jour en février 2015

Codification

Il y avait un manque de développement sur Drone.io donc je suis passé à Codeship et je l'apprécie énormément. 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 application Ruby on Rails 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 simple et hébergée .

Joshua Pinter
la source
7

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 met automatiquement en parallèle de grandes suites de tests.

Jay Moorthi
la source
5
Jay, vous voudrez peut-être exposer votre association avec tddium et solano labs. Selon la FAQ : "vous devez divulguer votre affiliation dans vos réponses"
tgf
7

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

Vanuan
la source
Travis CI est bon pour les projets open source mais pas vraiment pour les projets open source. Jenkins peut couvrir les deux cas :-)
Gabor Garami
1
Mais n'est-ce pas open source? github.com/travis-ci/travis-ci Ne pouvez-vous pas simplement configurer votre instance de travis privée comme vous le faites avec jenkins?
Vanuan
Vous pourriez probablement le faire, mais dans le Readme, ils le déconseillent et mentionnent que ce n'est pas encore un bon choix pour l'hébergement privé.
Andrew
C'est bien maintenant pour les projets fermés
aehlke
6

Comme beaucoup de gens, j'étais un grand fan de cruisecontrol.rb, mais j'ai récemment basculé mes projets sur Integrity .

Léger et facile à installer (un peu comme cc.rb), mais avec une interface plus agréable.

csexton
la source
5
J'ai juste essayé de configurer Integrity et c'est un gâchis.
lawrence
5

BigTuna - écrit en Ruby, utilise Rails et s'utilise comme CI.

oma
la source
3
Sachez que le lien appelier.com pour BigTuna est un lien mort vers un domaine expiré. Le projet est désormais disponible sur Github .
Jeff Dickey
5

Vous pouvez essayer Codeship 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 éléments sont déjà mis en œuvre 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 construction
  • Notification par e-mail des versions ayant échoué.

Nous travaillons également sur ces fonctionnalités:

  • Notification de bureau (potentiellement via Growl)
  • API REST pour les statuts de construction
  • Framework de plugins pour exécuter d'autres outils d'analyse de code et rapporter les résultats dans l'interface utilisateur
Florian Motlik
la source
3

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? Envoyez-vous un e-mail en clair en cas de réussite / échec. Besoin d'un planificateur? Tâche planifiée. Il s'agit de 0 $ / mois, et vous aurez une idée de ce que vous faites. Je ne vois pas comment le fait de payer 40 $ / mois m'aidera à 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 sont pas précompilés). Cela ne sera pas détecté 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 me ferai économiser 40 $ / mois.

Juuuuuust jetant mes deux sous dans la discussion; )

Victor Pudeyev
la source
1

Run Code Run peut être ce dont vous avez besoin.

Edit: lien supprimé car il ne fait plus référence à l'ancien site Run Code Run.

Todd Stout
la source
1
Maintenant sur le point d'être fermé. :(
Andrew Grimm
1

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.

Hakan Ensari
la source
1

Je n'aime que 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.

Brent Greeff
la source
0

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 de CI sans en aimer aucun, j'ai décidé de créer le mien, sans avoir besoin de créer de gros fichiers XML ou toute autre configuration. Exactement comme Rails a été conçu.

Si vous le souhaitez, envoyez-moi quelques commentaires.

Meilleures salutations,

Felipe Giotto.


la source
0

Lancer CI après chaque commit semble assez coûteux si vous souscrivez à la philosophie «commit souvent». Que diriez-vous d'exécuter un simple cronjob toutes les quelques heures et d'envoyer les résultats par courrier électronique à une liste de diffusion de développeurs?

JasonOng
la source
Ou, que diriez-vous simplement de configurer votre serveur CI pour interroger uniquement les modifications une fois par heure? La plupart des applications CI prennent en charge ce paramètre.
jerhinesmith
2
Avec git, vous pouvez vous engager souvent mais pousser rarement.
Vanuan
0

Je viens de configurer un Hudson / Jenkins pour cela. Le gem ci_reporter peut aider à formater la sortie JUnit, ce qu'attend Hudson, et Hudson a un plugin Rails, donc je peux voir la couverture rcov, les rapports de test, les statistiques des rails et bien plus encore.

Gabor Garami
la source
Pourriez-vous comparer votre configuration avec les autres alternatives?
Andrei
Comme j'utilise Rails 2.3.x pour mes projets de production, ce n'est actuellement pas le cas, car la plupart des autres alternatives nécessitent Rails 3.x. Cependant, quand je peux, je vais le tester et publier mes expériences.
Gabor Garami
J'ai aussi essayé Jenkins avec Rails 3.x et cela fonctionne très bien. J'ai également essayé d'autres solutions (par exemple IntegrityApp), mais comme j'utilise Jenkins pour tester d'autres projets, cela est également devenu la solution finale. Cela ne signifie pas qu'IntegrityApp ou d'autres choses sont mauvaises, IntegrityApp est de très bonnes choses, mais j'aime un peu plus Jenkins.
Gabor Garami
0

Vous devriez également envisager de consulter CloudMunch. Cela fournit une plate-forme polyglotte pour vous permettre d'avoir différentes langues dans le cadre de votre base de code, avec un riche ensemble de métadonnées de construction.

Prasanna
la source