Eine einfache und kostengünstige Methode, um eine kontinuierliche Integration für öffentliche Projekte auf GitHub durchzuführen, ist mittels der Travis CI Continuous Integration (CI) Plattform. Zur Ausführung muss im Wurzelverzeichnis des Git-Repositories eine YAML-Datei mit dem Namen .travis.yml erstellt werden, welche die Travis Konfiguration für das Projekt enthält.
Manchmal befinden sich aber mehrere (Sub)-Projekte in einem Git-Repository, welche in unterschiedliche Unterverzeichnisse zu finden sind.
Verzeichnisstruktur
Repository
|
|– Project1
|– Project2
Mittels Travis CI ist es möglich, auch für diese (Sub)-Projekte eine kontinuierliche Integration sicherzustellen.
Einfache Lösungsmöglichkeit
Als einfachste Möglichkeit, führt man die entsprechenden Build-Befehle im „Build Lifecycle“ für jedes (Sub)-Projekt nacheinander aus. Wichtig ist hierbei, dass vorher immer in den entsprechenden Projektordner mittels „cd ../ProjektOrdner“ Befehl gewechselt wird.
script: cd project1 && npm install && npm test && cd ../project2 && npm install && npm test
Elegantere Lösungsmöglichkeit
Eine deutlich elegantere Lösung ist es, für die einzelnen Projekte die Möglichkeit der Build Matrix von Travis zu nutzen. Der große Vorteil dabei ist, dass für jedes (Sub)-Projekt ein eigener Build-Job erstellt wird, welcher seinen eigenen Status bzw. Ergebniss besitzt.
Hierzu werden die Pfade der einzelnen (Sub)-Projekte als Umgebungsvariablen im Abschnit „env“ angegeben.
env: - PROJECT_DIR=project1 - PROJECT_DIR=project2 script: cd $PROJECT_DIR && npm install && npm test
Zu beachten ist hier, dass immer der gleiche Schlüssel wie z. B. „PROJECT_DIR“ verwendet wird. Anstelle des eigentlichen Projektpfades wird dieser dann als Variable „$PROJECT_DIR“ im „script“ Befehl angegeben. Travis führt nun den Build Lifecycle mehrmals mit jeder definierten Umgebungsvariable als eigenen Build-Job (parallel) aus.
Beispiel-Projekt
Projekt: https://github.com/mesche/angular-collection
Travis CI Konfiguration: https://github.com/mesche/angular-collection/blob/master/.travis.yml
Travis CI Build: https://travis-ci.org/mesche/angular-collection
Status-Bilder (Badges) je Build-Job
Leider bietet Travis CI nur die Möglichkeit, ein Status-Bild (auch Badge genannt) pro Repository zu erzeugen, welches man dann z. B. in der Readme.md Datei auf GitHub einfügen kann.
Möchte man aber für jeden einzelnen Build-Job ein Badge erzeugen, kann man folgendes GitHub-Projekt verwenden: Travis Matrix Build Badges