Ich versuche zu verstehen, was Travis CI tut und wann es verwendet werden sollte

85

Ich bin sehr neu in Git und ich plane, zu einem Open-Source-Projekt auf GitHub beizutragen, nachdem ich einen kleinen Fehler darin entdeckt habe. Nachdem ich es gegabelt und den Fehler behoben hatte, stellte ich eine Pull-Anfrage fest und bemerkte, dass dies auftauchte:

Fehlgeschlagen - Der Travis CI-Build ist fehlgeschlagen

Als ich mir die Details Could not find .travis.ymlansah, stellte ich fest, dass dies durch verursacht wurde , was durchaus Sinn machte, da ich mich nicht bei Travis Cl angemeldet und .travis.yml zum Repository hinzugefügt hatte.

Ich höre zum ersten Mal von Travis und der so genannten kontinuierlichen Integration. Und es klingt ziemlich cool. Um mehr darüber zu erfahren, habe ich es auf Wikipedia nachgeschlagen.

Travis CI ist ein gehosteter, verteilter kontinuierlicher Integrationsdienst, mit dem auf GitHub gehostete Projekte erstellt und getestet werden. Travis CI erkennt automatisch, wenn ein Commit durchgeführt und an ein GitHub-Repository gesendet wurde, das Travis CI verwendet, und versucht jedes Mal , das Projekt zu erstellen und Tests auszuführen . Dies schließt Commits für alle Zweige ein, nicht nur für den Hauptzweig.

Mein derzeitiges Verständnis von Travis CI ist, dass das Projekt automatisch vorangetrieben wird git commit -am ".."und ich einen Teil davon nicht ganz verstehe.

  1. Durch den Bau des Projekts und führen Tests , welche Tests wird es laufen? Und wie wird es das Projekt "bauen"? (wie es in Binär zu kompilieren?)

  2. Darin heißt es: "Dies schließt Commits für alle Zweige ein" - aber was ist, wenn ich nicht für alle Zweige festschreiben möchte?

  3. Ist es in Ordnung, wenn ich Travis Cl überhaupt nicht benutze? Unter welchen Umständen ist es am besten, es zu verwenden (oder es muss verwendet werden)?

versuchen es herauszufinden
quelle

Antworten:

103

Die einfachste Möglichkeit, Travis CI zu erklären, besteht darin, dass die Tests Ihres Programms jedes Mal ausgeführt werden, wenn Sie sich für GitHub engagieren (dies kann auf viele Arten konfiguriert werden und Sie können Builds für einige Zweige jederzeit deaktivieren). Der Punkt dabei ist, dass Sie oft sehr schnell feststellen können, ob Ihr Commit etwas kaputt gemacht hat, und es beheben können, bevor es zu einem Problem wird. Ich würde empfehlen, Travis CI auf jedem GitHub-Repo auszuführen, in dem Sie Unit-Tests durchführen und eine von Travis CI unterstützte Programmiersprache verwenden. Da das Einrichten von Travis CI sehr einfach ist, sehe ich normalerweise keinen guten Grund, es nicht zu verwenden, es sei denn, es ist Ihnen egal, ob Sie Tests in Ihrem Programm bestanden haben oder nicht. Fühlen Sie sich frei, einen Kommentar zu hinterlassen, wenn Sie weitere Fragen haben. Weitere Informationen zu Travis CI finden Sie hier .

Joshua-Anderson
quelle
1
Es heißt, es sei "kostenlos" für Open Source-Projekte, aber Ihre ersten 100 Builds seien kostenlos. Also ... ist es dann nicht kostenlos? Selbst wenn ich mich alleine entwickle, kann ich sehr schnell 100 Builds erreichen. Lese ich das falsch Ich kann nirgendwo Informationen finden. @ Joshua-Anderson
Mark Pieszak - Trilon.io
2
Es ist immer kostenlos für Open Source-Projekte. Für private Repos erhalten Sie 100 kostenlose Builds, bevor Sie sich für einen kostenpflichtigen Plan anmelden müssen.
Joshua-Anderson
Ist es nicht der typische Git-Workflow, der das letzte Commit abruft und lokal zusammenführt und testet und dann auf Remote überträgt?
Ben
Was ist mit Leuten, die Webentwicklung mit CLI-Tools für Angular, React oder Vue durchführen? Die Frameworks bieten sofortiges Transpilieren und Testen von Feedback beim Ausführen von Dev Server. Gibt es einen Unterschied zwischen diesem und Travis CI, oder sollte ich zwischen dem Ausführen von Komponententests vor dem Festschreiben und Verwenden von CI im Allgemeinen sagen?
OzzyTheGiant
Travis macht also keinen Sinn. Ich kann Travis einfach löschen, indem ich Git-Commit-Hooks und Block-Pushs verwende, die Fehler vom Testbefehl zurückgeben.
Betoharres
16

Da Sie bereits herausgefunden haben, was Travis-CI ist, möchte ich direkt auf Ihre Fragen verweisen.

Welche Tests werden ausgeführt, wenn das Projekt erstellt und Tests ausgeführt werden? Und wie wird es das Projekt "bauen"? (wie es in Binär zu kompilieren?)

In der .travis.ymla-Datei geben Sie Ihr Betriebssystem, die Programmiersprache, Ihren Repo-Zweig, den Namen der Projektdatei und andere Details an. Beim Lesen dieser Datei verwendet Travis-CI die spezifischen Compiler, die auf ihrem Server installiert sind, um unseren Code zu kompilieren. Wahrscheinlich werden sie den gleichen Mechanismus haben wie wir für Github. Zum ersten Mal ziehen sie möglicherweise den Code ab [wenn wir bestimmte Zweige angegeben haben, ziehen sie den Code möglicherweise nur aus diesen Zweigen]. Wir haben uns auch authentifiziert, um unser Konto bei Travis-CI zu verwenden. Wenn wir ein Commit durchführen, sollte eine Benachrichtigung an den Travis-CI-Server gesendet werden, damit es als Commit erkannt wird und mit dem Kompilieren beginnt.


Darin heißt es: "Dies schließt Commits für alle Zweige ein" - aber was ist, wenn ich nicht für alle Zweige festschreiben möchte?

Sie können verschiedene Zweige oder den masterZweig angeben . Und es sollte nur die spezifischen Zweige kompilieren, die in der .travis.ymlDatei angegeben sind.


Ist es in Ordnung, wenn ich Travis Cl überhaupt nicht benutze? Unter welchen Umständen ist es am besten, es zu verwenden (oder es muss verwendet werden)?

Ja es ist in Ordnung. Keine große Sache. Aber welche Vorteile werden Sie vermissen, wenn Sie diese einfach zu integrierende Engine nicht in Ihr Repo verwenden. Jedes Mal, wenn Sie ein Commit ausführen, kann es sein, dass etwas fehlt und aufgrund eines Codes nicht kompiliert werden konnte. Woher willst du das wissen? Daher sollten Sie Travis-CI verwenden.


Ich habe einen Blog- Beitrag geschrieben, in dem Sie lesen können, was Travis-CI ist, Continuous Integrations und wie Sie Travis-CI mit Ihrem Github Repo verknüpfen. Ich habe es für ein Swift-Repository geschrieben.

Hemang
quelle
2

Ich denke, ich bin in einer sehr guten Position, um Ihre Frage zu beantworten, da ich gerade Travis CI lerne. Das erste Problem, auf das Sie zuerst gestoßen sind, besteht darin, dass das Projekt, zu dem Sie beitragen, Travis CI zum Testen und Erstellen des Projekts verwendet. Wenn das Projekt Travis CI nicht verwendet, wäre ein solcher Fehler nicht aufgetreten.

Die Lösung besteht darin, die Travis CI-Website zu überprüfen und zu erfahren, wie sie funktioniert und wie sie sich auf das Projekt auswirkt, an dem Sie arbeiten. Dies versetzt Sie in eine sehr gute Position, um zu verstehen, was in Ihrem Code fehlschlägt und wie Sie ihn beheben können.

Beantwortung der ersten Frage zum Aufbau des Projekts.

Welche Tests werden ausgeführt, wenn das Projekt erstellt und Tests ausgeführt werden? Und wie wird es das Projekt "bauen"? (wie es in Binär zu kompilieren?)

Dies bedeutet, wie der Quellcode vor der Verwendung / dem Test verarbeitet wird. Es hängt von der Sprache ab, die Sie schreiben. Zum Beispiel, wenn das Projekt mit PHP schreibt. Es wird meinen Code nicht in eine ausführbare Datei wie C / C ++ - Quellcode einbauen. Es wird meinen PHP-Code auf einem PHP-Interpreter ausführen und ihn dabei testen. Es durchläuft immer noch den normalen Kompilierungsprozess, den Ihre bevorzugte Sprache durchläuft.

Emmanuel
quelle