在Travis中运行节点应用程序

时间:2016-03-24 10:21:33

标签: node.js travis-ci

我目前正在使用节点js构建服务器端应用程序。 为了测试它,我使用Travis,runs npm test by default

现在我还要测试依赖项是否正确,因此在Travis中使用

启动应用程序
nodejs app.js

如何在Travis中运行此任务?

2 个答案:

答案 0 :(得分:10)

您可以像在unix shell上一样运行任何任务:

language: node_js
node_js:
  - "5"
before_script:
  - npm install
script:
  - node app.js
  - npm test

npm install命令已涵盖您的目的。如果此操作失败并且随后您的npm test失败,则构建将不会成功。

对于更复杂的示例,您需要运行实际服务器,例如在API end-2-end测试中,我会使用docker-compose。但这在这里太过分了。

  

travis.yml

language: node_js
sudo: required
services:
  - docker
cache:
   directories:
     - node_modules
node_js:
  - 5
before_install:
  - npm install -g node-gyp
before_script:
  - npm install
  - npm install -g standard
  - docker-compose build
  - docker-compose up -d
  - sleep 3
script:
  - npm test
after_script:
  - docker-compose kill
  

搬运工-compose.yml

api1:
  build: .
  dockerfile: ./Dockerfile
  ports:
    - 3955
  links:
    - mongo
    - redis
  environment:
    - REDIS_HOST=redis
    - MONGO_HOST=mongo
    - IS_TEST=true
  command: "node app.js"

api2:
  build: .
  dockerfile: ./Dockerfile
  ports:
    - 3955
  links:
    - mongo
    - redis
  environment:
    - REDIS_HOST=redis
    - MONGO_HOST=mongo
    - IS_TEST=true
  command: "node app.js"

mongo:
  image: mongo
  ports:
    - "27017:27017"
  command: "--smallfiles --logpath=/dev/null"

redis:
   image: redis
   ports:
     - "6379:6379"

haproxy:
  image: haproxy:1.5
  volumes:
     - ./cluster:/usr/local/etc/haproxy/
  links:
    - "api1"
    - "api2"
  ports:
    - 80:80
    - 70:70
  expose:
    - "80"
    - "70"

答案 1 :(得分:6)

原始的简单答案很接近,但我需要在此论坛上找到一项修改:https://github.com/travis-ci/travis-ci/issues/1321

language: node_js
node_js:
  - "6"
before_script:
  - npm install
script:
  - node app.js &
  - npm test

我需要node app.js末尾的&符号(&)来在后台启动我的服务器进程。否则,它在前台运行服务器,等待,永远不会到达npm test