Système d'intégration continue pour une base de code Python

Translate

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

Je réalise que je pourrais le faire avec des crochets dans la plupart desVCS, mais cela nécessite que les tests soient exécutés 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 adapté à unPythoncodebase?

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Nous courronsBuildbot - Tracau travail. Je ne l'ai pas trop utilisé car 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.

La source
Translate

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

Hudson embrasse Python

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

(Mettre à jour, Sept. 2011: Suite à un différend de marque, Hudson a été renomméJenkins.)

La source
Translate

Deuxièmement, l'intégration Buildbot - Trac. Vous pouvez trouver plus d'informations sur l'intégration sur leSite Web 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).

La chose vraiment intéressante à propos de Buildbot est que la configuration est écrite en Python. Vous pouvez intégrer votre propre code Python directement à la configuration. Il est également très facile 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 pour que nous puissions envoyer des signaux avec les résultats de la construction. Lorsque la construction a échoué, nous avons allumé une lampe à lave rouge. Lorsque la construction a réussi, une lampe à lave verte s'est allumée. Bon temps :-)

La source
Translate

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

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

Hudson a un support formidable pour l'exploration des résultats globaux vers les suites de tests et les tests individuels; il est également idéal pour comparer la sortie de test entre les builds, mais le truc distribué (maître / esclave) est comparativement plus compliqué car vous avez également besoin d'un environnement Java sur les esclaves; De plus, Hudson tolère moins les liens réseau irréguliers entre le maître et les esclaves.

Ainsi, pour tirer parti des deux outils, nous exécutons une seule instance de Hudson, qui détecte les échecs de test courants, puis nous effectuons une régression multi-plateforme avec Buildbot.

Voici nos exemples:

La source
Translate

Nous utilisonsMorduqui est intégré à trac. Et c'est basé sur python.

La source
Betty Lee
Translate

TeamCity a du Pythonl'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.
La source
Translate

J'ai de très bonnes expériences avecTravis-CIpour les bases de code plus petites. Les principaux avantages sont:

  • la configuration se fait en moins d'un demi-écran de 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écessaire sur le site Web; se connecter via github

Quelques limitations:

  • Python n'est pas pris en charge en tant que langage de première classe (au moment de l'écriture; mais vous pouvez utiliser pip et apt-get pour installer des dépendances python; voirce tutoriel)

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

La source