Jenkins gegen Travis-CI. Welches würden Sie für ein Open Source-Projekt verwenden? [geschlossen]

270

Für mein Projekt muss ich zwischen Jenkins und Travis-CI wählen. Ich benutze Jenkins seit Jahren, habe aber auch gute Kritiken über Travis-CI gelesen.

Welches würden Sie für ein Open Source-Projekt verwenden? Was sind die Hauptvorteile oder -vorteile von beiden?

Juan Luis
quelle

Antworten:

293

Travis-ci und Jenkins, während beide Werkzeuge für die kontinuierliche Integration sind, sind sehr unterschiedlich.

Travis ist ein gehosteter Dienst (kostenlos für Open Source), während Sie Jenkins hosten, installieren und konfigurieren müssen.

Travis hat keine Jobs wie in Jenkins. Die Befehle zum Ausführen des Codes stammen aus einer Datei mit dem Namen, .travis.ymldie sich entlang Ihres Projektcodes befindet. Dies macht es einfach, einen unterschiedlichen Testcode pro Zweig zu haben, da jeder Zweig eine eigene Version der Datei .travis.yml haben kann.

Sie können eine ähnliche Funktion mit Jenkins haben, wenn Sie eines der folgenden Plugins verwenden:

  • Travis YML Plugin - Warnung: scheint nicht beliebt zu sein, wahrscheinlich nicht vollständig im Vergleich zum echten Travis.
  • Jervis - eine Modifikation von Jenkins zum Lesen, um Jobs aus einer .jervis.ymlDatei zu erstellen, die sich im Stammverzeichnis des Projektcodes befindet. Wenn .jervis.ymles nicht vorhanden ist, wird .travis.ymlstattdessen auf die Verwendung von Datei zurückgegriffen.

Es gibt andere gehostete Dienste, die Sie möglicherweise auch für die kontinuierliche Integration in Betracht ziehen (nicht vollständige Liste):


Wie man wählt ?

Möglicherweise möchten Sie bei Jenkins bleiben, weil Sie damit vertraut sind oder sich bei Ihrem kontinuierlichen Integrationssystem nicht auf Dritte verlassen möchten. Andernfalls würde ich Jenkins fallen lassen und mich für einen der kostenlos gehosteten CI-Dienste entscheiden, da diese Ihnen viel Ärger ersparen (Hosten, Installieren, Konfigurieren, Vorbereiten von Jobs).

Abhängig davon, wo Ihr Code-Repository gehostet wird, würde ich die folgenden Entscheidungen treffen:

  • Inhouse → Jenkins oder Gitlab-ci
  • Github.com → Travis-CI

Um Travis-CI für ein Github-Projekt einzurichten, müssen Sie lediglich Folgendes tun:

  • Fügen Sie eine .travis.yml- Datei im Stammverzeichnis Ihres Projekts hinzu
  • Erstellen Sie ein Konto bei travis-ci.com und aktivieren Sie Ihr Projekt

Die Funktionen, die Sie erhalten, sind:

  • Travis führt Ihre Tests für jeden Push auf Ihrem Repo durch
  • Travis führt Ihre Tests für jede Pull-Anfrage durch, die Mitwirkende stellen
Thomasleveil
quelle
25
Nach meiner Erfahrung .travis.ymlerspart Ihnen die Verwendung von Jenkins über Travis auch viel Ärger ( !). Ich habe mehrere Github-Projekte, für die ich meine eigenen Jenkins verwende, und ich bereue das kein bisschen. Wenn Sie die Möglichkeit haben, Ihre eigenen Jenkins zu betreiben, würde ich diese Option sehr empfehlen. Es ist schön, 100% Kontrolle über Ihre CI-Umgebung zu haben.
Simon Forsberg
21
Mit dem Jenkins-Pipeline-Plugin (das in den meisten Situationen Projekte im freien Stil ersetzen soll) kann das Pipeline-Groovy-Skript in einer Datei (normalerweise "Jenkinsfile") in Ihrem Projekt abgelegt werden, sodass dieselben Funktionen wie in erwähnt werden Travis-CI oben, mit dem zusätzlichen Bonus, vom Jenkins-Team unterstützt zu werden.
KhainTCore
48

Ich habe sowohl an Travis als auch an Jenkins gearbeitet: Ich werde einige der Funktionen von beiden auflisten:

Richten Sie CI für ein Projekt ein

Travis steht an erster Stelle. Es ist sehr einfach einzurichten. Die Einrichtung mit GitHub dauert weniger als eine Minute.

  1. Melden Sie sich bei GitHub an
  2. Erstellen Sie einen Web-Hook für Travis ( bearbeiten:
  3. Kehren Sie zu Travis zurück und melden Sie sich mit Ihren GitHub-Anmeldeinformationen an
  4. Synchronisieren Sie Ihr GitHub-Repo und aktivieren Sie Push- und Pull-Anforderungen.

Jenkins:

  1. Erstellen Sie eine Umgebung (Master Jenkins)
  2. Erstellen Sie Web-Hooks
  3. Konfigurieren Sie jeden Job (braucht Zeit im Vergleich zu Travis)

Builds erneut ausführen

Travis: Jeder mit Schreibzugriff auf GitHub kann den Build erneut ausführen, indem er auf "Build neu starten" klickt

Jenkins: Führen Sie Builds basierend auf einer Phrase erneut aus. Sie geben Phrasentext in PR / Commit-Beschreibung an, wie z reverify jenkins.

Kontrollierende Umgebung

Travis: Travis bietet eine gehostete Umgebung. Es installiert die erforderliche Software für jeden Build. Es ist ein zeitaufwändiger Prozess.

Jenkins: Einmaliges Setup. Installiert die gesamte erforderliche Software auf einem Knoten / Slave-Computer und erstellt / testet sie anschließend in einer vorinstallierten Umgebung.

Protokolle erstellen:

Travis: Unterstützt das Erstellen von Protokollen in Amazon S3.

Jenkins: Einfache Einrichtung mit dem Plugin für Build-Artefakte.

rameshthoomu
quelle
Könnten Sie bitte sagen, was ist S3?
Pooja
@Pooja Amazon S3
adrianN
30

Ich würde Travis für ein Open Source-Projekt vorschlagen. Es ist einfach zu konfigurieren und zu verwenden.

Einfache Schritte zum Einrichten:

  1. Sollte ein GITHUB- Konto haben und sich mit Ihrem GITHUB-Konto auf der Travis CI- Website registrieren.
  2. Fügen Sie eine .travis.ymlDatei im Stammverzeichnis Ihres Projekts hinzu. Fügen Sie Travis als Dienst auf Ihrer Repository-Einstellungsseite hinzu.

Jetzt erstellt Travis jedes Mal, wenn Sie sich in Ihr Repository verpflichten, Ihr Projekt. Sie können einfache Schritte ausführen, um mit Travis CI zu beginnen.

appsntech
quelle
7
Eine Einschränkung für die Verwendung von Travis CI für Open Source: Es führt seine Builds und Tests entweder unter Linux oder OSX aus, nicht unter Windows. Wenn Ihr Projekt beispielsweise .NET oder PowerShell ist, muss es in einer plattformübergreifenden Version von .NET (entweder Mono oder .NET Core) oder PowerShell (PowerShell Core) geschrieben sein, damit Sie Travis CI verwenden können . Ein Windows-freundlicher gehostetes CI-Tool ist Appveyor ..
Simon Tewsi