Kontinuierliches Integrationssystem für eine Python-Codebase

  • Ich arbeite gerade an einem Hobbyprojekt mit einer Python -Codebase, und ich möchte eine Form der kontinuierlichen Integration einrichten (z. B. das Ausführen einer Reihe von Testfällen) Jedes Mal, wenn ein Check-in durchgeführt wird und E-Mails an die zuständigen Personen gesendet werden, wenn die Tests fehlschlagen, ähnlich wie CruiseControl oder TeamCity .

    Ich erkenne, dass ich dies mit Hooks in den meisten VCSes tun könnte, aber dazu müssen die Tests auf demselben Computer wie der Versionskontrollserver ausgeführt werden, was nicht so elegant ist wie ich mögen. Hat jemand Vorschläge für ein kleines, benutzerfreundliches Open Source-Integrationssystem, das für eine Python Codebase geeignet ist?

    14 May 2018
    q-l-pnlucaroni
7 answers
  • Eine Möglichkeit ist Hudson. Es ist in Java geschrieben, aber es gibt eine Integration mit Python-Projekten:

    Hudson umarmt Python

    Ich habe es selbst noch nie probiert .

    ( Update , Sept. 2011: Nach einem Markenstreit wurde Hudson in Jenkins .)

    28 January 2013
    Joe Shaw
  • Wir führen Buildbot - Trac bei der Arbeit aus. Ich habe es nicht allzu oft verwendet, da meine Codebase noch nicht Teil des Veröffentlichungszyklus ist. Wir führen die Tests jedoch in verschiedenen Umgebungen (OSX / Linux / Win) durch und senden E-Mails - und das ist in Python geschrieben.

    14 May 2018
    q-l-pnlucaroni
  • Zweitens die Buildbot-Trac-Integration. Weitere Informationen zur Integration finden Sie auf der Buildbot-Website . In meinem vorherigen Job haben wir das erwähnte Plugin (tracbb) geschrieben und verwendet. Was das Plugin macht, schreibt alle Buildbot-URLs neu, sodass 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 erstellen, um bestimmte Aufgaben auszuführen.

    Wir haben BuildSteps verwendet, um die Quelle aus dem SVN abzurufen, die Abhängigkeiten abzurufen, Testergebnisse in WebDAV usw. zu veröffentlichen / p>

    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: -)

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

    Die Konfiguration von Buildbot ist reines Python und ziemlich einfach, sobald Sie den Dreh raus haben (sehen Sie sich die epydoc-generierten API-Dokumente an aktuellste Info). Buildbot erleichtert das Definieren von Nicht-Testaufgaben und die Verteilung der Tester. Es gibt jedoch wirklich kein Konzept für einzelne Tests, nur Text-, HTML- und Zusammenfassungsausgabe. Wenn Sie also mehrstufige durchsuchbare Testausgabe usw. wünschen, müssen Sie sie selbst erstellen oder einfach Hudson verwenden.

    Hudson unterstützt den Drilldown der Gesamtergebnisse in Testreihen und Einzeltests hervorragend. Es eignet sich auch gut für den Vergleich der Testausgabe zwischen Builds, aber das verteilte (Master / Slave-) Zeug 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 dem Master und den Slaves.

    Um die Vorteile beider Tools nutzen zu können, führen wir eine einzige Instanz von Hudson aus, die die Bei häufigen Testfehlern führen wir mit Buildbot eine Regression für mehrere Plattformen durch.

    Hier sind unsere Beispiele:

    • Jython Hudson
    • < a href = "http://www.acm.uiuc.edu/jython-buildbot/waterfall" rel = "noreferrer"> Jython-Buildbot
    26 December 2010
    Nicholas Riley
  • Wir verwenden Bitten , das in trac integriert ist. Und es basiert auf Python.

    16 September 2008
    Pierre-Jean Coudert
  • In TeamCity gibt es einige Python-Integration .

    TeamCity ist jedoch:

    • nicht Open Source
    • ist nicht klein, sondern reich an Funktionen.
    • ist für kleine und mittlere Teams kostenlos.
    23 September 2008
  • Ich habe sehr gute Erfahrungen mit Travis-CI für kleinere Codebasen. The Die Hauptvorteile sind:

    • Das Einrichten erfolgt in weniger als einem halben Bildschirm der Konfigurationsdatei
    • Sie können Ihre eigenen Einstellungen vornehmen Installation oder verwenden Sie einfach die kostenlose gehostete Version
    • halbautomatisches Setup für github-Repositorys
    • kein Konto auf der Website erforderlich; Anmeldung über github

    Einige Einschränkungen:

    • Python ist nicht als Erstklassensprache (zum Zeitpunkt des Schreibens) unterstützt; Sie können pip und apt-get verwenden, um Python-Abhängigkeiten zu installieren; siehe dieses Tutorial )

    • Code muss auf github gehostet werden (zumindest bei Verwendung des offizielle Version)

    03 February 2012
    Bernhard Kausler