2016-03-24 5 views
4

В настоящее время я создаю приложение на стороне сервера с узлом js. Чтобы проверить это, я использую Travis, который runs npm test by default.Запустить приложение узла в Travis

Теперь я хочу также, чтобы проверить, если зависимости являются правильными и поэтому запустить приложение в Travis с

nodejs app.js 

Как я могу выполнить эту задачу в Travis?

+0

Трэвис, как и многие аналогичные сервисы CI, должен предполагать или подразумевать вашу настройку и запускать тесты и задачи до и после сборки автоматически. Пожалуйста, подумайте, что это не вопрос, соответствующий требованиям Stackoverflow, обязательно прочитайте документы или любые официальные руководства для Travis. – diegoaguilar

ответ

7

Вы можете запустить любую задачу, как можно было бы ожидать, что это будет на оболочке UNIX:

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

Однако ваша цель покрыта уже командой npm install. Если это не удастся, и впоследствии ваш npm test не удастся, сборка не будет выполнена.

Для более сложных примеров, когда вам нужно запускать реальные серверы, скажем, в тесте API-интерфейса конца 2-го уровня я бы использовал вместо этого 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" 
3

оригинальный простой ответ близок, но мне нужно найти одну модификацию на этом форуме : 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.

Смежные вопросы