web-dev-qa-db-fra.com

Quel cadre d'intégration continue utilisez-vous et pourquoi?

Il existe de nombreuses frayères d'intégration continue (CI) différentes et je me demande, ce qui est le plus populaire. Quels cadres avez-vous utilisés chez les entreprises où vous travaillez?

Y a-t-il une raison quelconque un cadre CI est plus populaire qu'un autre - peut-être qu'il s'agit de faire avec les fonctionnalités qu'il offre, des choses qui l'intégrent ou peut-être de son juste marketing?

Il semble que l'intégration continue soit utilisée plus dans le Java et .net mondes que de dire Ruby ou python. Pourquoi cela?

21
Richard Warburton

Hudson ou Jenkins (ce dernier est une fourchette du premier). Raison: c'est simple (simple à installer et à utiliser) et a une grande flexibilité. Les plugins ajoutent presque toutes les fonctionnalités que je peux penser.

Il y a quelques années, j'ai utilisé Damagecontrol . Il était également simple à utiliser, mais n'avait pas les plugins. Mais l'auteur a décidé de renoncer à la solution simple et de développer une nouvelle version, composée de différents serveurs communiquant les uns avec les autres (qu'est-ce que diable?). Cela n'a pas bien fonctionné et le projet a été abandonné. J'étais à la recherche un peu de temps, mais ni Cruisecontrol (trop compliqué) ou continuum m'a vraiment eu. Jusqu'à ce que Hudson, cela a travaillé dès le premier moment pour moi.

31
Mnementh

J'utilise TeamCity au travail et à la maison. Il a un excellent support pour une variété de coureurs de construction et est extensible via des plugins.

Ne pas traiter avec des piles de XML pour la configuration est un énorme plus dans mes livres et la version gratuite est suffisante pour les besoins de mon domicile.

Un problème que j'ai couru avec TeamCity doit faire avec essayer de l'obtenir à la version automatiquement des assemblages .NET. J'ai dû créer une solution de contournement relativement compliquée, mais une fois que c'était en place, cela a fonctionné comme un charme.

16
Adam Lear

Personnellement, je n'ai jamais utilisé Cruisecontrol et Cruisecontrol.net. La raison de cela a à voir avec l'économie. Ils sont raisonnablement stables et une fois que vous les avez mis, il est vraiment faible, vous devez faire pour le maintenir. La communauté des utilisateurs est généralement très utile et elle peut être étendue à vos besoins.

Cela dit, il y a quelques offres commerciales dont je suis au courant (un de Jetbrains, l'autre par Atlassien) offrant une meilleure expérience de mise en place et une meilleure aide commerciale. J'ai voulu essayer ces offres mais je n'ai pas encore eu aucune chance.

Les outils CI ont un rôle plus important à jouer avec des langues compilées que les langues interprétées, mais cela ne veut pas dire que l'outil CI est gaspillé des langues interprétées. Lorsque vous avez plusieurs projets qui dépendent de l'autre et que vous souhaitez vous assurer que le changement ne casse pas accidentellement de dépendances - les outils CI sont inestimables.

Il y a trois classes générales de problèmes que les outils CI peuvent vous aider à attraper:

  1. Compilez des erreurs - si la signature d'une classe change de manière à briser les dépendances, il est préférable de le savoir avant les heures restantes d'une livrable.
  2. Erreurs logiques - Si le comportement d'une classe change de manière à briser les dépendances, il est préférable de le savoir plus tôt. Cela doit être vérifié par une sorte de test automatisé, le plus souvent des tests unitaires.
  3. Test d'acceptation - Si vous avez une suite automatisée de tests à exécuter sur le produit fini, il est préférable de les exécuter souvent.

Les langues interprétées ne sont pas compilées, il n'y a donc aucune erreur de compilation pour attraper. Cependant, les deux autres problèmes sont suffisamment courants que les outils CI soient utiles pour des projets de Ruby/Python/Perl/etc.

Le mot clé dans les erreurs logiques et les points de test d'acceptation est "automatisé" des tests. Si vous n'avez pas de suite de tests, une machine peut exécuter, vous manquez vraiment les plus grands avantages des outils CI. Les suites automatisées peuvent être construites avec le temps, vous pouvez donc commencer petit.

Edit

Voir cette belle carte pour les comparaisons de fonctionnalités d'un grand nombre d'outils CI (dont beaucoup je ne savais pas):

http://confluence.public.thoughtworks.org/display/cc/ci+feature+Matrix

8
Berin Loritsch

( Server Foundation Team Foundation

CI solide, intégration serrée avec Visual Studio et GIT comme contrôle de version . J'ai vu des serveurs CI plus flexibles, comme Hudson, mais l'intégration serrée de TFS avec d'autres produits rend l'expérience si transparente qu'il ait un sens pour mon équipe.

5
Ryan Hayes

J'utilise les deux Cruisecontrol.net et Hudson . Certaines de mes constructions sont sur l'une d'entre elles et certaines sont de l'autre.

Pourquoi? Parce que je ne suis pas l'ingénieur de construction et celui qui est l'ingénieur de construction, les configurons de cette façon!

Je n'ai pas de problème avec la façon dont mes constructions sont configurées ou des plaintes concernant l'un ou l'autre produit. Je vous rapporte à vous la façon dont les choses sont ici, d'une facturation et d'espérer que vous appréciez cette perspective!

Mise à jour: Depuis que j'ai posté la réponse, Hudson a été fourchue et devenue Jenkins . La recommandation ci-dessus s'applique à Jenkins.

2
azheglov

Pulse . Cela fonctionne essentiellement, qui pour un ingénieur de construction occupé est une grosse affaire. Ils ont également un excellent support technique. La principale raison pour laquelle j'adore cela est tellement que nous avons plus de 25 projets et cela les gère sans hoquet; Je ne peux pas dire la même chose pour Hudson.

1
ebneter

Notre équipe travaille principalement à Python, C++ et Java. Nous utilisons Buildbot pour CI. Nous avons initialement commencé avec cela parce qu'il s'intègre à TRAC et parce qu'il semblait simple et simple. Je crois que c'est le cadre de choix CI dans le Python World.

1
Buildbot

Hudson. C'est un peu de buggy parfois et certains des plugins les plus intéressants ne fonctionnent pas réellement, mais avec une petite main à la main, il est assez utilisable.

J'utiliserais probablement l'impulsion à la place, mais si vous avez besoin de construire sur plusieurs plates-formes, c'est> 5 000 $, ce qui est un peu beaucoup.

1
Steve

Cruisecontrol.net pour une intégration continue. Fonctionne assez bien, bien que le très grand nombre de projets de construction, nous avons mis en place sur Cruisecontrol, l'application CCTray Desktop Plateau est horriblement non réactive, même avec de longs intervalles d'actualisation.

Nant est destiné aux scripts de construction qui sont exécutés dans les projets Cruisecontrol. Pour des scripts de construction plus complexes, nous avons étendu Nant avec des tâches personnalisées C # nant, qui est très agréable - le code d'écriture dans C # est beaucoup plus agréable que de créer des scripts nant.

Nous sommes une boutique Microsoft et vous passeront théoriquement à la construction de l'équipe de Microsoft 2010 une fois que nous migrons l'environnement de notre Team Foundation Server en 2010.

1
brett rogers