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

Mehrere (Sub)-Projekte / Unterverzeichnisse als einzelne Jobs mit Travis CI ausführen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.