Як налаштувати Travis CI з декількома мовами


98

Мій проект використовує і nodejs, і java

Я спробував почати з node_js build, а потім встановити java (оскільки це модуль npm)

але сценарії для встановлення Java не вдалося, плюс я не думаю, що немає необхідності встановлювати її, коли є збірка з Java, яка вже існує.

чи слід починати з побудови Java, а потім встановлювати вузол?

Я намагаюся це

language: java
  - oraclejdk8
language: node_js
node_js:
  - "0.10"

який ігнорує перші 2 рядки, здається, і створює node_js, який має java 7, і мій проект використовує java 8

Я спробував цю відповідь для python

використовуючи

language: node_js
node_js:
  - "0.10"
java: oraclejdk8

але це не спрацювало

Як я можу додати java 8?


Відповіді:


116

Здається, зараз можна запустити кілька мов у одному .travis.yml-файлі за допомогою matrix:includeфункції. Як приклад, моє репо Github розташоване так:

project/ - top-level github directory
project/backend - Python backend
project/backend/tests - Python tests
project/android/AppName - Android app
project/ios/AppName - iOS app

Ось файл .travis.yml, який запускає тести на Python, Java та Objective-C:

matrix:
  include:
    - language: python
      python: 2.7
      before_script:
        - cd backend/tests
      script:
        - python -m unittest discover

    - language: android
      dist: trusty
      jdk: oraclejdk8
      android:
        components:
          - tools
          - android-25
          - build-tools-25.0.3
      before_script:
        - cd android/AppName
      script:
        - ./gradlew build connectedCheck

    - language: objective-c
      os: osx
      osx_image: xcode8.3
      before_script:
        - cd ios/AppName
      script:
        - xcodebuild -workspace AppName.xcworkspace -scheme AppName
          -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.3' build test

notifications:
  email:
    - yourname@gmail.com

Здається, ви можете створити стільки різних конфігурацій, скільки вам подобається, використовуючи цю функцію, обробляючи кожен запис у матриці як конфігурацію верхнього рівня. Звичайно, якщо у вас є якісь параметри, які ви хочете встановити, що стосуються всіх мов, ви можете зробити це на найвищому рівні, як я це роблю тут із notifications:emailрозділом.

Коли все налаштовано, то при кожній збірці ви отримуєте щось подібне. Бум.

введіть тут опис зображення


2
Це виглядало багатообіцяюче, але це не вдається інструменту " травіс-
meisteg

4
Я не можу розмовляти з інструментом для ворсу, але можу сказати, що вже кілька місяців використовую подібне налаштування, і воно спрацювало чудово.
Codiak

Я використовував цю установку для python та nodejs. Замість того, python: 3.5щоб використовувати для встановлення версії, я використав python:\n - "3.5"(зауважте, це два окремі рядки), як рекомендовано на офіційній сторінці travis-ci. Помилка побудови, тому що Travis намагається отримати python-["3.5"](помітити [і "). Чи знаєте ви, чому це може бути? Працює однолінійний.
CrazyFrog

3
тут є щось дивне: ОП запитала про встановлення кількох мов В ІДНІЙ БУДІВ, а не про налаштування декількох мов, по одній для кожної збірки.
FuzzyAmi

2
@meisteg при використанні офіційного інструменту Travis lint це підтверджує його. $ travis lint ~/Desktop/test.yml Hooray, /Users/nathanf/Desktop/test.yml looks valid :)
Натан Ф.

23

У середовищі побудови Travis Java ви можете використовувати nvmдля керування час виконання Node.js :

.travis.yml

language: java

jdk:
  - oraclejdk8

env:
  - NODE_VERSION="0.12"

before_install:
  - nvm install $NODE_VERSION

Якщо версія вашого вузла зовсім недавня, можливо, вам доведеться також оновити nvm.

Щоб оновити nvm, напишіть це у своєму .travis.yml:

before_install:
  - wget https://raw.githubusercontent.com/creationix/nvm/v0.31.0/nvm.sh -O ~/.nvm/nvm.sh
  - source ~/.nvm/nvm.sh
  - nvm install 5 # for Node v5
  - node --version

Наведений вище приклад показує, як спочатку оновити nvm v0.31, а потім отримати Node v5.


Це моє улюблене рішення.
Natim

13

Мій проект має Python / Django backback та JS / Vue frontend, як показано нижче:

├── backend
│   ├── api
│   │   ├── tests                               
├── daemon                                                          
│   ├── frontend
│   │   ├── test

Ідея полягає в тому, щоб запустити кожен набір тестів у заданні матриці , один для тестів Python / Django, а інший для JS:

matrix:
  include:
    - language: python
      python: 
        - 3.4
      before_install:
        - cd backend/
      install: 
        - pip install -r requirements.txt
      script:
        - python manage.py test

    - language: node_js
      node_js:
        - 4.8
      before_install:
        - cd daemon/frontend
      install:
        - yarn install
      script:
        - yarn test

notifications:
  email: false

Дивитися також


12

Я використовував це .yml:

language: java
jdk:
    - oraclejdk8
node_js: "0.10"
install: "npm install"
script: "npm test"

10

Ви не можете додати кілька мов, що пояснює поведінку, яку ви бачите, і node_jsналаштування буде розпізнано лише в проекті з мовою вузла. Що ви можете зробити, це скористатися закладеною nvmв TravisCI. Наприклад, ви можете включити - nvm install 0.10 - nvm use 0.10 у свій before_installрозділ для завантаження останнього випуску вузла v0.10.x.


2
але мені вдалося це зробити за допомогою файлу конфігурації, на який я самостійно відповів
Amr Draz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.