Question

Je commence à travailler sur un projet de loisir avec un Python codebase et j'aimerais mettre en place une forme d'intégration continue (c'est-à-direexécuter une batterie de cas de test à chaque fois qu'un enregistrement est effectué et envoyer des e-mails de rappel aux personnes responsables lorsque les tests échouent) similaire à Régulateur de vitesse ou ÉquipeCité.

Je me rends compte que je pourrais le faire avec des crochets dans la plupart des cas. VCS, mais cela nécessite que les tests s'exécutent sur la même machine que le serveur de contrôle de version, ce qui n'est pas aussi élégant que je le souhaiterais.Quelqu'un a-t-il des suggestions pour un petit système d'intégration continue open source, convivial et adapté à un Python base de code ?

Était-ce utile?

La solution

Nous courrons Buildbot-Trac au travail.Je ne l'ai pas trop utilisé puisque ma base de code ne fait pas encore partie du cycle de publication.Mais nous exécutons les tests sur différents environnements (OSX/Linux/Win) et il envoie des e-mails — et c'est écrit en Python.

Autres conseils

Une possibilité est Hudson.Il est écrit en Java, mais il existe une intégration avec les projets Python :

Hudson adopte Python

Cependant, je ne l'ai jamais essayé moi-même.

(Mise à jour, septembre2011 :Après un litige concernant la marque, Hudson a été renommé Jenkins.)

Deuxièmement, l'intégration Buildbot - Trac.Vous pouvez trouver plus d'informations sur l'intégration sur le Site Web de buildbot.Lors de mon travail précédent, nous avons écrit et utilisé le plugin qu'ils mentionnent (tracbb).Le plugin réécrit toutes les URL de Buildbot afin que vous puissiez utiliser Buildbot depuis Trac.(http://example.com/tracbb).

Ce qui est vraiment bien avec Buildbot, c'est que la configuration est écrite en Python.Vous pouvez intégrer votre propre code Python directement à la configuration.Il est également très simple d'écrire vos propres BuildSteps pour exécuter des tâches spécifiques.

Nous avons utilisé BuildSteps pour obtenir la source de SVN, extraire les dépendances, publier les résultats des tests sur WebDAV, etc.

J'ai écrit une interface X10 afin que nous puissions envoyer des signaux avec les résultats de construction.Lorsque la construction a échoué, nous avons allumé une lampe à lave rouge.Une fois la construction réussie, une lampe à lave verte s'est allumée.Bon temps :-)

Nous utilisons à la fois Buildbot et Hudson pour le développement Jython.Les deux sont utiles, mais présentent des forces et des faiblesses différentes.

La configuration de Buildbot est purement Python et assez simple une fois que vous l'avez compris (consultez la documentation de l'API générée par epydoc pour les informations les plus récentes).Buildbot facilite la définition de tâches non liées aux tests et la distribution des testeurs.Cependant, il n'a vraiment aucun concept de tests individuels, juste une sortie textuelle, HTML et récapitulative, donc si vous souhaitez avoir une sortie de test navigable à plusieurs niveaux, etc., vous devrez la construire vous-même, ou simplement utiliser Hudson.

Hudson dispose d'un support formidable pour analyser les résultats globaux dans les suites de tests et les tests individuels ;c'est également idéal pour comparer les résultats des tests entre les versions, mais les éléments distribués (maître/esclave) sont comparativement plus compliqués car vous avez également besoin d'un environnement Java sur les esclaves ;De plus, Hudson tolère moins les liens réseau instables entre le maître et les esclaves.

Ainsi, pour bénéficier des avantages des deux outils, nous exécutons une seule instance d'Hudson, qui détecte les échecs de test courants, puis nous effectuons une régression multiplateforme avec Buildbot.

Voici nos instances :

Nous utilisons Mordu qui est intégré à trac.Et c'est basé sur Python.

TeamCity a du Python l'intégration.

Mais TeamCity c'est :

  • pas open source
  • n'est pas petit, mais plutôt riche en fonctionnalités
  • est gratuit pour les petites et moyennes équipes.

J'ai de très bonnes expériences avec Travis-CI pour les bases de code plus petites.Les principaux avantages sont :

  • la configuration se fait en moins d'un demi-écran du fichier de configuration
  • vous pouvez faire votre propre installation ou simplement utiliser la version hébergée gratuite
  • configuration semi-automatique pour les référentiels github
  • aucun compte n'est nécessaire sur le site Web ;connectez-vous via github

Quelques limitations :

  • Python n'est pas pris en charge en tant que langage de première classe (au moment de la rédaction ;mais vous pouvez utiliser pip et apt-get pour installer les dépendances python ;voir ce tutoriel)

  • le code doit être hébergé sur github (au moins lors de l'utilisation de la version officielle)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top