2015-06-24 55 views
1

我已經創建了一個.travis.yml文件,據我所知是正確的,但是當Travis CI運行測試(這是一個新項目,所以我只有一個)我得到一個錯誤,表示沒有數據庫運行如何讓Travis CI啓動mongodb?

connection error: { [MongoError: connect ECONNREFUSED] name: 'MongoError', message: 'connect ECONNREFUSED' } 

我添加了一個預測試腳本啓動蒙戈,現在我可以不啓動蒙戈運行我的本地測試,並將其傳遞,但​​與特拉維斯CI它得到的錯誤:

ERROR: child process failed, exited with error number 100 

我.travis。 yml文件看起來像這樣:

language: node_js 
node_js: 
    "0.10" 

services: 
- mongodb 

,這裏是我的腳本從的package.json:

"scripts": { 
    "pretest": "mongod --fork --logpath /dev/null", 
    "test": "./node_modules/mocha/bin/mocha test/**/*.js", 
    "posttest": "mongo admin --eval 'db.shutdownServer()' > /dev/null", 
    "start": "node server.js" 
    }, 

我試圖把鏈接特拉維斯,但我新,所以我只能把一個鏈接,所以我把鏈接到我回購,所以你可以從那裏得到那些鏈接,如果你想看到完整的特拉維斯故障:https://github.com/mrbgit/short-stories/tree/tests-for-story-post

任何幫助,這將是偉大的。我是Stack Overflow的新手,如果您需要更多信息,請告訴我。

感謝您的幫助!

回答

1

我看着你的回購和它看起來像你有兩個文件:

  • 一個名爲.travis.yml不啓動MongoDB的
  • 一個名爲travis.yml(注意沒有前導點(即.)here),它用上面列出的代碼啓動MongoDB。

特拉維斯CI只挑選了名爲.travis.yml文件。所以確保正確的一個。

我叉你的回購,做了一個測試用fixed.travis.yml,似乎有worked

希望這會有所幫助!

+0

真棒,就是這樣,謝謝Dominic!我覺得有點愚蠢,我一直在尋找幾個小時才能找到答案... – CascadiaJS

+0

好消息!不用擔心它發生在我們最好的人身上。 ;-) –

0

我說link to official docs可能會有用。

似乎你不需要手動啓動mongodb,就像你在預測試中一樣。也許,我實際上不知道,你的預測試是先運行的,在travis試圖啓動mongodb之後,它已經在運行,並且它遇到了錯誤並停止了進程。我發現這個thread。問題出在mongodb數據目錄的擁有者身上。它是根源,但是mongodb是在沒有sudo的情況下啓動的。如果您自己運行mongodb(與您在預測試中一樣),則可以手動指定--dbpath作爲具有可接受的用戶權限的目錄。

+0

感謝您的幫助,但不幸的是,我已經發現該線程,它不適用於Travis。我嘗試了你的建議,並刪除了啓動mongodb的預測試腳本,但它恢復了原來的數據庫連接錯誤。 – CascadiaJS