2015-04-28 14 views
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.So führen Sie Tests automatisch in GitLab CI mit gitlab-ci-multi-runner aus

Was will ich jetzt zu tun ist, einen Job zu haben, die npm install läuft alle Abhängigkeiten und einen Job zur herunterladen, die mit Karma/Jasmin geschrieben all meinen Tests führen durch karma start karma.conf.js oder mit Grunzen läuft und grunt test läuft.

So ist der erste Job, den ich versuchte, war:

cd app 
npm install 
karma start karma.conf.js 

Die ersten beiden Befehle ausgeführt werden sollen, aber der letzte ist völlig ignoriert. Also habe ich versucht, die Jobs zu teilen. Die ersten Befehle erhalten ihren eigenen Job (Tab "parallel ausführen") und der letzte wurde in einen eigenen Job in der Registerkarte "run on success" 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 die Karma-Aufgabe 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?

+0

Haben Sie das jemals mit '.gitlab-ci.yml' zu tun? – montrealist

+1

Ja! Funktioniert perfekt jetzt :)! Ich werde meine Lösung unten posten. – error1337

Antwort

11

Da diese Frage gestellt wurde, hat Gitlab CI auf .gitlab-ci.yml für config umgeschaltet. Ich glaube, dass der empfohlene Weg, um Abhängigkeiten zu installieren mit einem before_script Befehl ist wie

before_script: 
    - npm install 

test: 
    script: npm test 
+3

Kleiner Hinweis für Windows-Benutzer ... Befehle wie "npm install" funktionieren nicht, Sie müssen "call npm install" verwenden. – error1337

+0

Es hat etwas damit zu tun, dass npm auf Windows wirklich eine npm.cmd ist, also wenn Gitlab CI es ausführt (mit etwas wie "cmd/c npm.cmd ..."), wenn npm.cmd fertig ist, existiert tatsächlich die cmd, So endet der ganze Job. Nicht so sicher, aber so etwas. – Ivan

4

Ich mag würde meine Endlösung unten schreiben, andere mit diesem Problem zu helfen. Meine .gitlab-ci.yaml Datei und meine karma.conf.js befinden sich im App-Root-Verzeichnis. Für Karma verwende ich PhantomJS, das funktioniert gut für Windows und auch für meinen Linux-Server.

Lösung für Windows:

image: node:4.2.2 

cache: 
    paths: 
    - node_modules/ 

stages: 
    - test 

test_app: 
    stage: test 
    script: 
    - run npm install 
    - run karma start karma.conf.js 

Zeit ein Linux-Server zum Testen verwende ich/meine apps zu bauen. Sie müssen den "run" entfernen, damit dies für Linux funktioniert.

Wenn Sie mehr als einen Job haben, können Sie die Befehle zur Abhängigkeitsinstallation in den Abschnitt "before_script" verschieben, wie es Tamlyn oben geschrieben hat.

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

+0

Sehr nützlich, vielen Dank für das Teilen! Für mich war es nützlich zu sagen: "Karma start - single-run", um es einfach einmal laufen zu lassen. – fedorqui