在Travis中运行节点应用程序

Zok*_*ker 6 node.js travis-ci

我目前使用节点js构建服务器端应用程序.为了测试它,我使用Travis,它默认运行npm test.

现在我还要测试依赖项是否正确,从而在Travis中启动应用程序

nodejs app.js
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Travis中执行此任务?

elj*_*efe 10

您可以运行任何类似于您希望它在unix shell上的任务:

language: node_js
node_js:
  - "5"
before_script:
  - npm install
script:
  - node app.js
  - npm test
Run Code Online (Sandbox Code Playgroud)

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

对于更复杂的示例,您需要运行实际的服务器,比如在API端到端测试中,我会使用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
Run Code Online (Sandbox Code Playgroud)

泊坞窗,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"
Run Code Online (Sandbox Code Playgroud)


小智 7

最初的简单答案很接近,但我需要在这个论坛上找到一个修改: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
Run Code Online (Sandbox Code Playgroud)

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