我目前正在使用节点js构建服务器端应用程序。 为了测试它,我使用Travis,runs npm test by default。
现在我还要测试依赖项是否正确,因此在Travis中使用
启动应用程序nodejs app.js
如何在Travis中运行此任务?
答案 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
。