So führen Sie Tests automatisch in GitLab CI mit gitlab-ci-multi-runner aus

8

Ich begann mit dem GitLab CI mit dem gitlab-ci-multi-runner für Windows (64bit) zu arbeiten. Alles funktioniert soweit, es gibt Verbindungen zu meinen Repositories und meine konfigurierten Jobs werden bei jedem Push gestartet.

Was ich jetzt tun möchte, ist ein Job, der npm install ausführt, um alle Abhängigkeiten herunterzuladen, und einen Job, der alle meine Tests mit karma / Jasmine ausführt, indem er karma start karma.conf.js ausführt oder grunt verwendet und grunt test .

Der erste Job, den ich ausprobiert habe, war:

%Vor%

Die ersten beiden Befehle werden ausgeführt, aber der letzte wird komplett ignoriert. Also habe ich versucht, die Jobs zu teilen. Die ersten Befehle erhalten ihren eigenen Job (Reiter "parallel ausführen") und der letzte wurde in den eigenen Job in der Registerkarte "Erfolg ausführen" verschoben. Jetzt werden alle Abhängigkeiten installiert und der zweite Job startet. So weit, so gut, aber der zweite Job beginnt mit dem Entfernen aller zuvor installierten Abhängigkeiten und versucht dann karma start karma.conf.js auszuführen. Dies führt offensichtlich dazu, dass alle Tests fehlschlagen, weil die npm-Abhängigkeit "angular-mocks" nicht heruntergeladen wurde. Wenn ich npm install zum zweiten Job hinzufüge (was für mich nicht so viel Sinn macht), wird der Karma-Task wieder ignoriert.

Was ist das Problem hier? Wie kann ich das beheben? Und gibt es eine Möglichkeit, nicht immer alle Abhängigkeiten bei jeder Testausführung herunterzuladen?

    
error1337 28.04.2015, 10:19
quelle

2 Antworten

11

Seit der Veröffentlichung dieser Frage hat Gitlab CI auf .gitlab-ci.yml für config umgestellt. Ich glaube, der empfohlene Weg, um Abhängigkeiten zu installieren, ist mit einem before_script -Befehl wie

%Vor%     
Tamlyn 04.11.2015, 15:43
quelle
4

Ich möchte meine endgültige Lösung unten veröffentlichen, um anderen bei diesem Problem zu helfen. Meine .gitlab-ci.yaml -Datei und meine karma.conf.js befinden sich im app-root-Verzeichnis. Für Karma benutze ich PhantomJS , was gut für Windows und auch für meinen Linux-Server funktioniert.

Lösung für Windows:

%Vor%

Momentan verwende ich einen Linux-Server zum Testen / Erstellen meiner Apps. Sie müssen den "run" entfernen, damit dies für Linux funktioniert.

Wenn Sie mehr als einen Job haben, können Sie die Befehle zum Installieren von Abhängigkeiten in den Abschnitt "before_script" verschieben, wie es Tamlyn oben beschrieben hat.

Bitte sag mir, ob es immer noch nicht für dich funktioniert. Vielleicht habe ich noch ein paar Ideen ... Ich habe viel daran gearbeitet, damit es funktioniert.

    
error1337 03.05.2016 12:36
quelle