Frage

Ich bin mit der Arbeit beginnen auf einem hobby-Projekt mit einem Python codebase und ich würde gerne irgendeine form von continuous integration (d.h.läuft eine Batterie von test-Fällen jedes mal, wenn ein check-in aus und senden nag-e-mails an die Verantwortlichen Personen, wenn die tests fehlschlagen) ähnlich CruiseControl oder TeamCity.

Ich weiß, ich könnte dies mit Haken in den meisten VCSes, aber das erfordert, dass die tests, die auf der gleichen Maschine wie die version-control-server, der nicht so elegant, wie ich es gerne hätte.Hat jemand irgendwelche Vorschläge für einen kleinen, Benutzer-freundlich, open-source continuous integration system, geeignet für eine Python codebase?

War es hilfreich?

Lösung

Wir führen Buildbot - Trac bei der Arbeit.Ich habe nicht verwendet es zu viel, da meine Codebasis ist nicht Teil des release-Zyklus noch.Aber wir führen die Prüfungen auf unterschiedlichen Umgebungen (OSX/Linux/Windows), und es sendet E — Mails-und es ist in Python geschrieben.

Andere Tipps

Eine Möglichkeit ist der Hudson.Es ist in Java geschrieben, aber es gibt eine integration mit Python Projekte:

Hudson umarmt Python

Ich habe es nie versucht mich allerdings.

(Update, Sept.2011:Nach einem Markenrechtsstreit Hudson umbenannt wurde, um Jenkins.)

Zweitens die Buildbot - Trac-integration.Finden Sie weitere Informationen über die integration auf der Buildbot website.Bei meinem vorherigen job, schrieben wir und das plugin verwendet, die Sie erwähnen (tracbb).Was das plugin macht, ist das umschreiben aller Buildbot-urls, so dass Sie verwenden können, Buildbot innerhalb von Trac.(http://example.com/tracbb).

Das wirklich schöne an Buildbot ist, dass die Konfiguration in Python geschrieben ist.Integrieren Sie Ihre eigenen Python-code direkt in die Konfiguration.Es ist auch sehr leicht zu schreiben Ihre eigenen BuildSteps zum ausführen bestimmter Aufgaben.

Wir verwendet BuildSteps, um die Quelle aus dem SVN ziehen Sie die Abhängigkeiten, veröffentlichen die Testergebnisse, die WebDAV-Speicher.

Ich schrieb einen X10-Schnittstelle, so konnten wir senden Sie Signale mit build-Ergebnisse.Wenn der build fehlgeschlagen ist, wechselten wir auf ein rot-lava-Lampe.Wenn der build erfolgreich war, eine grüne lava-Lampe eingeschaltet.Gute Zeiten :-)

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

Buildbot-Konfiguration ist reines Python und Recht einfach, sobald Sie den Dreh raus (Blick auf die epydoc-generierte API-Dokumentation für die meisten aktuellen info).Buildbot macht es einfacher zu definieren, non-testing-Aufgaben und verteilen die Tester.Jedoch, es hat wirklich kein Konzept der einzelnen tests, nur Text -, HTML -, und die Inhaltsangabe der Ausgabe, so, wenn Sie wollen zu multi-level-browsable test-Ausgang und so weiter, Sie müssen es selbst bauen, oder benutzen Sie einfach Hudson.

Hudson hat die tolle Unterstützung, die für einen Drilldown von insgesamt Ergebnisse in test-suites und-Einzelprüfungen;es ist auch toll für den Vergleich von test-Ausgabe zwischen builds, aber die verteilt (master/slave) - Zeug ist vergleichsweise komplizierter, denn Sie müssen einer Java-Umgebung auf die Sklaven zu;auch Hudson ist weniger tolerant, schuppige network links zwischen dem master und den slaves.

Also, um die Vorteile beider tools, führen wir eine einzelne Instanz von Hudson, die die Aufmerksamkeit der gemeinsame test-Ausfälle, dann werden wir tun, multi-Plattform-regression mit Buildbot.

Hier sind unsere Instanzen:

Wir sind mit Gebissen welches ist integrierte mit trac.Und es ist python basiert.

TeamCity hat einige Python integration.

Aber TeamCity ist:

  • nicht open-source
  • ist nicht kleiner, sondern eher feature-rich
  • frei für kleine-Mitte-teams.

Ich habe sehr gute Erfahrungen mit Travis-CI für kleinere Codebasen.Die wichtigsten Vorteile sind:

  • das setup ist in weniger als einer halben Bildschirm von config Datei
  • Sie können Ihre eigene installation oder nutzen Sie einfach die Kostenlose gehostete version
  • semi-automatisches setup für github repositories
  • kein Konto erforderlich auf der website;login via github

Einige Einschränkungen:

  • Python ist nicht unterstützt, wie ein erste-Klasse-Sprache, die (wie der Zeit des Schreibens;aber Sie können pip und apt-get install python-Abhängigkeiten;finden dieses tutorial)

  • code hosted on github (zumindest bei der Verwendung der offiziellen version)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top