你如何让特拉维斯CI启动mongodb?

时间:2015-06-24 16:41:42

标签: mongodb travis-ci

据我所知,我创建了一个正确的.travis.yml文件,但是当Travis CI运行测试时(它是一个新项目,所以我只有一个)我得到一个错误没有数据库正在运行

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

我添加了一个预测试脚本来启动mongo,现在我可以在不启动mongo的情况下运行我的本地测试并且它通过了,但是使用Travis 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"
  },

我尝试将链接添加到travis,但我是新的,所以我只能放一个链接,所以我将链接放到我的仓库,所以如果你想要你可以从那里获取这些链接看到完整的travis失败:https://github.com/mrbgit/short-stories/tree/tests-for-story-post

对此的任何帮助都会很棒。我是Stack Overflow的新手,所以如果您需要更多信息,请告诉我。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

我看了你的回购,看起来你有两个文件:

  • 一个名为.travis.yml 且未启动MongoDB的
  • 一个名为travis.yml的人(注意这里没有前导点(即.)),它使用上面列出的代码启动MongoDB。

Travis CI只会选择名为 .travis.yml 的文件。所以要确保正确的。

我分叉了您的回购并使用fixed .travis.yml 进行了测试,似乎有worked

希望这有帮助!

答案 1 :(得分:0)

我认为link to official docs可能有用。

好像你不需要像在预测试中那样手动启动mongodb。也许,我实际上并不知道,你的预测试是先运行,然后travis尝试启动mongodb,但它已经运行了,它会遇到错误并停止进程。

我也发现了thread。问题出在mongodb数据目录的所有者身上。它是根本的,但是mongodb是在没有sudo的情况下开始的。如果您自己运行mongodb(就像在预测试中那样),则可以为具有用户可接受权限的目录手动指定--dbpath