Kontinuierliches Integrationssystem für eine Python-Codebasis

Translate

Ich fange an, an einem Hobbyprojekt mit einem zu arbeitenPythoncodebase und ich möchten eine Form der kontinuierlichen Integration einrichten (dh jedes Mal, wenn ein Check-in durchgeführt wird, eine Reihe von Testfällen ausführen und nag-E-Mails an verantwortliche Personen senden, wenn die Tests fehlschlagen), ähnlich wieTempomatoderTeamCity.

Mir ist klar, dass ich das meistens mit Haken machen kannVCSesDies setzt jedoch voraus, dass die Tests auf demselben Computer wie der Versionskontrollserver ausgeführt werden, was nicht so elegant ist, wie ich es gerne hätte. Hat jemand Vorschläge für ein kleines, benutzerfreundliches Open-Source-System zur kontinuierlichen Integration, das für a geeignet ist?PythonCodebasis?

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

Alle Antworten

Translate

Wir rennenBuildbot - Tracbei der Arbeit. Ich habe es nicht zu oft benutzt, da meine Codebasis noch nicht Teil des Veröffentlichungszyklus ist. Wir führen die Tests jedoch in verschiedenen Umgebungen (OSX / Linux / Win) durch und es werden E-Mails gesendet - und es ist in Python geschrieben.

Quelle
Translate

Eine Möglichkeit ist Hudson. Es ist in Java geschrieben, aber es gibt eine Integration mit Python-Projekten:

Hudson umarmt Python

Ich habe es jedoch nie selbst versucht.

(Aktualisieren, Sept. 2011: Nach einem Markenrechtsstreit wurde Hudson in umbenanntJenkins.)

Quelle
Translate

Zweitens die Buildbot-Trac-Integration. Weitere Informationen zur Integration finden Sie auf derBuildbot-Website. Bei meinem vorherigen Job haben wir das erwähnte Plugin (tracbb) geschrieben und verwendet. Das Plugin schreibt alle Buildbot-URLs neu, damit Sie Buildbot in Trac verwenden können. ((http://example.com/tracbb).

Das wirklich Schöne an Buildbot ist, dass die Konfiguration in Python geschrieben ist. Sie können Ihren eigenen Python-Code direkt in die Konfiguration integrieren. Es ist auch sehr einfach, eigene BuildSteps zu schreiben, um bestimmte Aufgaben auszuführen.

Wir haben BuildSteps verwendet, um die Quelle von SVN abzurufen, die Abhängigkeiten abzurufen, Testergebnisse in WebDAV zu veröffentlichen usw.

Ich habe eine X10-Schnittstelle geschrieben, damit wir Signale mit Build-Ergebnissen senden können. Als der Build fehlschlug, schalteten wir eine rote Lavalampe ein. Als der Bau erfolgreich war, schaltete sich eine grüne Lavalampe ein. Gute Zeiten :-)

Quelle
Translate

Wir verwenden sowohl Buildbot als auch Hudson für die Jython-Entwicklung. Beide sind nützlich, haben aber unterschiedliche Stärken und Schwächen.

Die Konfiguration von Buildbot ist reines Python und recht einfach, sobald Sie den Dreh raus haben (die aktuellsten Informationen finden Sie in den von Epydoc generierten API-Dokumenten). Buildbot erleichtert das Definieren von nicht testenden Aufgaben und das Verteilen der Tester. Es gibt jedoch kein Konzept für einzelne Tests, sondern nur Text-, HTML- und Zusammenfassungsausgaben. Wenn Sie also eine mehrstufige durchsuchbare Testausgabe usw. wünschen, müssen Sie diese selbst erstellen oder einfach Hudson verwenden.

Hudson hat eine hervorragende Unterstützung für die Analyse der Gesamtergebnisse in Testsuiten und Einzeltests. Es eignet sich auch hervorragend zum Vergleichen der Testausgabe zwischen Builds, aber das verteilte (Master / Slave-) Material ist vergleichsweise komplizierter, da Sie auch auf den Slaves eine Java-Umgebung benötigen. Außerdem ist Hudson weniger tolerant gegenüber flockigen Netzwerkverbindungen zwischen Master und Slaves.

Um die Vorteile beider Tools zu nutzen, führen wir eine einzelne Hudson-Instanz aus, die die häufigsten Testfehler abfängt, und führen dann mit Buildbot eine plattformübergreifende Regression durch.

Hier sind unsere Beispiele:

Quelle
Translate

Wir benutzenGebissenwelches in trac integriert ist. Und es basiert auf Python.

Quelle
Betty Lee
Translate

TeamCity hat PythonIntegration.

Aber TeamCity ist:

  • nicht Open Source
  • ist nicht klein, sondern funktionsreich
  • ist kostenlos für kleine bis mittlere Teams.
Quelle
Translate

Ich habe sehr gute Erfahrungen mitTravis-CIfür kleinere Codebasen. Die Hauptvorteile sind:

  • Die Einrichtung erfolgt in weniger als einem halben Bildschirm der Konfigurationsdatei
  • Sie können Ihre eigene Installation durchführen oder einfach die kostenlose gehostete Version verwenden
  • halbautomatisches Setup für Github-Repositories
  • Kein Konto auf der Website erforderlich. Login über Github

Einige Einschränkungen:

  • Python wird nicht als erstklassige Sprache unterstützt (zum Zeitpunkt des Schreibens; Sie können jedoch pip und apt-get verwenden, um Python-Abhängigkeiten zu installieren; siehedieses Tutorial)

  • Code muss auf Github gehostet werden (zumindest bei Verwendung der offiziellen Version)

Quelle