【问题标题】:How do you get Travis CI to start mongodb?你如何让 Travis CI 启动 mongodb?
【发布时间】:2015-06-26 04:15:44
【问题描述】:

据我所知,我创建了一个正确的 .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,但我是新手,所以我只能放一个链接,所以我会把链接放到我的 repo,如果你想查看完整的,你可以从那里获取这些链接travis 失败:https://github.com/mrbgit/short-stories/tree/tests-for-story-post

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

感谢您的帮助!

【问题讨论】:

    标签: mongodb travis-ci


    【解决方案1】:

    我查看了您的存储库,看起来您有两个文件:

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

    Travis CI 只获取名为 .travis.yml 的文件。所以请确保正确。

    我 fork 你的 repo 并使用 fixed 进行了测试 .travis.yml 似乎有 worked

    希望这会有所帮助!

    【讨论】:

    • 太棒了,就是这样,谢谢多米尼克!我觉得有点愚蠢,我一直在寻找几个小时才能找到答案......
    • 好消息!不用担心它会发生在我们最好的人身上。 ;-)
    【解决方案2】:

    我觉得link to official docs 可能有点用处。

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

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

    【讨论】:

    • 感谢您的帮助,但不幸的是我已经找到了该线程并且它不适用于 travis。我尝试了您的建议并删除了启动mongodb的预测试脚本,但它返回了原始数据库连接错误。
    猜你喜欢
    • 2015-10-26
    • 1970-01-01
    • 2022-06-24
    • 2017-05-05
    • 2022-10-18
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    相关资源
    最近更新 更多