2015-04-28 26 views
8

Ho iniziato a lavorare con GitLab CI usando gitlab-ci-multi-runner per Windows (64 bit). Finora tutto funziona bene, ci sono connessioni ai miei repository e i miei lavori configurati vengono avviati su ogni push.Come eseguire i test automaticamente in GitLab CI usando gitlab-ci-multi-runner

Quello che voglio fare ora è avere un lavoro che va npm install per scaricare tutte le dipendenze e un lavoro che esegue tutte le mie prove scritte con il karma/gelsomino eseguendo karma start karma.conf.js o utilizzando grugnito e funzionante grunt test.

Così il primo lavoro che ho provato era:

cd app 
npm install 
karma start karma.conf.js 

I primi due comandi vengono eseguiti, ma l'ultimo è completamente ignorato. Così ho provato a dividere i lavori. Il primo ai comandi ottiene il proprio lavoro (scheda "Esegui in parallelo") e l'ultimo è stato spostato sul proprio lavoro nella scheda "Esegui in caso di successo". Ora tutte le dipendenze vengono installate e viene avviato il secondo lavoro. Fin qui tutto bene, ma il secondo lavoro inizia con la rimozione di tutte le dipendenze precedentemente installate e poi tenta di eseguire karma start karma.conf.js. Questo ovviamente finisce con il fallimento di tutti i test perché la dipendenza "nock-angock" non è stata scaricata. Se aggiungo npm install al secondo lavoro (che non ha molto senso per me), l'attività karma verrà ignorata di nuovo.

Qual è il problema qui? Come posso risolvere questo? E c'è un modo per non scaricare sempre tutte le dipendenze su ogni esecuzione del test?

+0

Avete mai avuto modo di funzionare con '.gitlab-ci.yml' per caso? – montrealist

+1

Sì! Funziona perfettamente ora :)! Pubblicherò la mia soluzione qui sotto. – error1337

risposta

11

Poiché questa domanda è stata pubblicata, Gitlab CI è passato a utilizzare .gitlab-ci.yml per la configurazione. Credo che il metodo consigliato per installare le dipendenze è con un comando before_script come

before_script: 
    - npm install 

test: 
    script: npm test 
+3

Piccolo suggerimento per gli utenti di Windows ... comandi come "npm install" non funzionano, devi usare "call npm install". – error1337

+0

Ha qualcosa a che fare con npm su Windows che è in realtà un npm.cmd, quindi quando Gitlab CI lo esegue (usando qualcosa come "cmd/c npm.cmd ...") quando npm.cmd termina effettivamente esiste il cmd, così finisce l'intero lavoro. Non troppo sicuro, ma qualcosa di simile. – Ivan

4

Vorrei inviare la mia soluzione definitiva di seguito, per aiutare gli altri con questo problema. Il mio file .gitlab-ci.yaml e il mio karma.conf.js si trovano nella directory root dell'app. Per il karma sto usando PhantomJS, che funziona benissimo per Windows e anche per il mio server linux.

Soluzione per 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 

Attualmente sto usando un server linux per il test/costruire le mie applicazioni. Devi rimuovere il "run" per farlo funzionare per Linux.

Se si dispone di più di un lavoro, è possibile spostare i comandi di installazione delle dipendenze nella sezione "before_script", come scritto sopra Tamlyn.

Per favore dimmi, se non funziona ancora per te. Forse ho altre idee ... Ho lavorato molto su questo, per farlo funzionare.

+0

Molto utile, grazie per aver condiviso! Per me è stato utile dire "karma start --single-run' per farlo funzionare una volta sola. – fedorqui

Problemi correlati