2015-07-05 8 views
5

Mam repo, które zawiera wiele komponentów, większość z nich w JavaScript (Node.js) i jeden napisany w Ruby (Ruby on Rails). Chciałbym mieć jeden plik .travis.yml, który uruchamia jedną kompilację, która uruchamia wszystkie testy dla każdego komponentu. Według this Travis CI Google Group thread na razie nie ma oficjalnego wsparcia.Jak uruchomić testy Node.js i Ruby w ramach jednego projektu na Travis CI

Moja struktura katalogów wygląda następująco:

. ├── buildserver ├── core ├── extensions ├── webapp ├── Vagrantfile ├── package.json ├── .travis.yml └── Makefile

Chcę móc uruchomić konkretne wersje Ruby (2.2.2) i node.js (0.12.2). Mam już cel make, więc make test uruchamia odpowiedni zestaw testów w każdym podkatalogu.

Odpowiedz

15

Okazuje się, że każda maszyna wirtualna, która uruchamia izolowany zestaw testów w Travis CI, jest dostarczana z Node.js and Ruby pre-installed. Domyślnie otrzymujesz Ruby 1.9.3 i Node.js 0.12.2 (ale to może się zmienić, ponieważ zespół Travis aktualizuje ich środowisko), więc mimo że możesz podać tylko jeden język (np. language: Ruby) w swoim pliku .travis.yml, możesz nadal działać zarówno programy Ruby, jak i Node.js na Travis CI VM.

Zdecydowałem się przejść z językiem Node.js i zainstalować odpowiednią wersję Ruby (ale mógłbym zrobić coś odwrotnego z tym samym efektem).

Oto mój plik .travis.yml config:

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