2015-04-28 123 views
8

我開始使用gitlab-ci-multi-runner for Windows(64bit)來使用GitLab CI。到目前爲止,一切運行良好,與我的存儲庫有連接關係,我的配置作業在每次推送時都開始。如何使用gitlab-ci-multi-runner在GitLab CI中自動運行測試

我想現在要做的是具有運行npm install下載所有依賴一個工作以及執行運行karma start karma.conf.js或使用咕嚕和運行grunt test果報/茉莉書面我所有的測試之一的工作。

所以我嘗試了第一份工作是:

cd app 
npm install 
karma start karma.conf.js 

前兩個命令得到執行,但最後一個被完全忽略。所以我試圖分工。第一個命令獲得他們自己的工作(選項卡「並行運行」),最後一個被移到標籤「運行成功」的自己的工作中。現在所有依賴關係都已安裝,第二項工作開始。目前爲止這麼好,但第二項工作是從刪除先前安裝的所有依賴項開始,然後嘗試運行karma start karma.conf.js。這顯然最終會導致所有測試都失敗,因爲npm依賴性「angular-mocks」未被下載。如果我將npm install添加到第二份工作中(這對我來說沒有多大意義),則業務任務將被再次忽略。

這裏有什麼問題?我怎樣才能解決這個問題?有沒有辦法不總是下載每個測試執行的所有依賴關係?

+0

你有沒有得到過這個與'.gitlab-ci.yml'一起工作的機會? – montrealist

+1

是的!現在完美工作:)!我會在下面發佈我的解決方案。 – error1337

回答

11

由於此問題已發佈,Gitlab CI已切換爲使用.gitlab-ci.yml進行配置。我相信安裝依賴推薦的方式是用before_script命令,如

before_script: 
    - npm install 

test: 
    script: npm test 
+3

針對windows用戶的小提示...「npm install」等命令不起作用,您必須使用「call npm install」。 – error1337

+0

它與Windows上的npm有關,實際上是一個npm.cmd,所以當Gitlab CI在npm.cmd完成時運行它(使用類似「cmd/c npm.cmd ...」的內容)時,它確實存在cmd,所以結束了整個工作。不太確定,但是像這樣。 – Ivan

4

我想下面張貼我的最終解決方案,幫助別人這個問題。我的.gitlab-ci.yaml文件和我的karma.conf.js位於應用程序根目錄中。對於因果報應,我使用的是PhantomJS,這對Windows和我的linux服務器都很好。

解決方案的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 

目前我使用的是Linux服務器進行測試/建立我的應用程序。你必須刪除「運行」才能使其適用於Linux。

如果您有多個作業,您可以將依賴關係安裝命令移動到像上面所寫的Tamlyn那樣的「before_script」部分。

請告訴我,如果它仍然不適合你。也許我有更多的想法......我在這方面做了很多工作,以使其工作。

+0

非常有用,感謝分享!對我而言,說「業力開始 - 單一運行」讓它只運行一次是有用的。 – fedorqui

相關問題