如何在Travis CI上的一个项目中运行Node.js和Ruby测试

如何在Travis CI上的一个项目中运行Node.js和Ruby测试,node.js,ruby,rspec,travis-ci,ruby-mocha,Node.js,Ruby,Rspec,Travis Ci,Ruby Mocha,我有一个包含多个组件的repo,其中大部分是JavaScript(Node.js)和Ruby(RubyonRails)编写的。我想要一个.travis.yml文件,它触发一个构建,运行每个组件的所有测试。据报道,目前还没有官方的支持 我的目录结构如下所示: . ├── 构建服务器 ├── 核心 ├── 扩展 ├── 网络应用 ├── 流浪汉档案 ├── package.json ├── .特拉维斯 └── 生成文件 我希望能够运行特定版本的Ruby(2.2.2)和Node.js(0.12.2

我有一个包含多个组件的repo,其中大部分是JavaScript(Node.js)和Ruby(RubyonRails)编写的。我想要一个.travis.yml文件,它触发一个构建,运行每个组件的所有测试。据报道,目前还没有官方的支持

我的目录结构如下所示:


.
├── 构建服务器
├── 核心
├── 扩展
├── 网络应用
├── 流浪汉档案
├── package.json
├── .特拉维斯
└── 生成文件


我希望能够运行特定版本的Ruby(2.2.2)和Node.js(0.12.2)。我已经有了一个
make
目标,所以
make test
在每个子目录中运行适当的测试套件。

结果是,在Travis CI上运行独立测试套件的每个VM都附带了。默认情况下,您将获得Ruby 1.9.3和Node.js 0.12.2(但随着Travis团队更新其环境,这可能会发生变化),因此即使您只能在
.Travis.yml
文件中指定一种语言(例如
语言:Ruby
),您仍然可以在Travis CI VM上运行Ruby和Node.js程序

我决定使用Node.js语言设置并安装适当的Ruby版本(但我可以用同样的效果做相反的事情)

这是我的
.travis.yml
配置文件:

language: node_js
node_js:
  - 0.12.2
addons:
  postgresql: "9.4"
before_install:
  - rvm install 2.2.2
install:
  # run whatever you have to do here. I have a Makefile that lets you install
  # all Node.js-related or Ruby-related dependencies as one step.
  - make npm
  - make bundler
before_script:
  # My Rails app lives in a subdirectory. I want to make sure that
  # my database is ready before I start running RSpec tests
  - psql -c 'create database test_db;' -U postgres
  # I use separate database.yml config for Travis CI
  - cp webapp/config/database.travis.yml webapp/config/database.yml
script:
  # `test` target executes `bundle exec rspec spec` and `npm run test`
  # in all appropriate subdirectories
  - make test