2015-04-28 12 views
8

Zacząłem pracować z GitLab CI używając gitlab-ci-multi-runner dla Windows (64bit). Do tej pory wszystko działa dobrze, są połączenia z moimi repozytoriami i moje skonfigurowane zadania zaczynają się przy każdym naciśnięciu.Jak uruchamiać testy automatycznie w GitLab CI za pomocą gitlab-ci-multi-runner

co chcę teraz zrobić, to mając jedną pracę, która biegnie npm install pobrać wszystkie zależności i jedno zadanie, które wykonuje wszystkie moje testy pisemne z karma/jaśminu uruchamiając karma start karma.conf.js lub używając chrząknięcie i działa grunt test.

Tak więc pierwszym zadaniem było próbowałem:

cd app 
npm install 
karma start karma.conf.js 

Pierwsze dwa polecenia zostanie wykonany, ale ostatni jest całkowicie ignorowany. Więc próbowałem podzielić zadania. Pierwsze polecenia mają własne zadanie (zakładka "uruchom równolegle"), a ostatnie zostało przeniesione do własnej pracy na zakładce "Uruchom na sukces". Teraz wszystkie zależności zostaną zainstalowane i rozpocznie się drugie zadanie. Do tej pory tak dobrze, ale drugie zadanie zaczyna się od usunięcia wszystkich wcześniej zainstalowanych zależności, a następnie próbuje uruchomić karma start karma.conf.js. To oczywiście kończy się niepowodzeniem wszystkich testów, ponieważ zależność npm "makiety kątowe" nie została pobrana. Jeśli dodaję npm install do drugiego zadania (co nie ma dla mnie większego sensu), zadanie karmy zostanie zignorowane ponownie.

Na czym polega problem? Jak mogę to naprawić? I czy istnieje sposób, aby nie zawsze pobierać wszystkich zależności od każdego wykonania testu?

+0

Czy zdarzyło Ci się kiedyś, że działa to z '.gitlab-ci.yml'? – montrealist

+1

Tak! Działa teraz idealnie :)! Opublikuję moje rozwiązanie poniżej. – error1337

Odpowiedz

11

Od momentu opublikowania tego pytania Gitlab CI przełączył się na konfigurację za pomocą .gitlab-ci.yml. Wierzę, zalecanym sposobem jest zainstalowanie zależności z before_script polecenia takie jak

before_script: 
    - npm install 

test: 
    script: npm test 
+3

Mała wskazówka dla użytkowników Windows ... polecenia takie jak "npm install" nie działają, musisz użyć "call npm install". – error1337

+0

To ma coś wspólnego z npm na Windowsie, który naprawdę jest npm.cmd, więc gdy Gitlab CI go uruchomi (używając czegoś takiego jak "cmd/c npm.cmd ...") kiedy npm.cmd skończy, faktycznie istnieje cmd, tak kończy się cała praca. Nie jestem pewien, ale coś takiego. – Ivan

4

chciałbym odpowiedzieć poniżej moje ostateczne rozwiązanie, aby pomóc innym w tej kwestii. Mój plik .gitlab-ci.yaml i mój karma.conf.js znajdują się w katalogu głównym aplikacji. Do karmy używam PhantomJS, która działa doskonale zarówno dla Windowsa, jak i dla mojego serwera linuksowego.

Rozwiązanie dla systemu 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 

Obecnie używam serwera linux do testów/budowania moje aplikacje. Musisz usunąć "run", aby uruchomić to dla Linuksa.

Jeśli masz więcej niż jedno zadanie, możesz przenieść polecenia instalowania zależności do sekcji "before_script", jak napisano powyżej Tamlyn.

Proszę mi powiedzieć, czy nadal nie działa. Może mam trochę więcej pomysłów ... Dużo nad tym pracowałem, żeby to działało.

+0

Bardzo przydatne, dzięki za udostępnienie! Dla mnie dobrze było powiedzieć "karma start - single-run", aby uruchomić go raz. – fedorqui

Powiązane problemy