Ответ 1
Я использовал этот .yml
:
language: java
jdk:
- oraclejdk8
node_js: "0.10"
install: "npm install"
script: "npm test"
В моем проекте используются как nodejs, так и java
Я попытался начать с сборки node_js, затем установил java (так как это модуль npm)
но скрипты для установки java не удались, и я не думаю, что там нужно установить его, когда есть сборка с уже существующей java.
Я должен начать с сборки java, а затем установить node?
Я пытаюсь это сделать
language: java
- oraclejdk8
language: node_js
node_js:
- "0.10"
который игнорирует первые две строки, которые, по-видимому, создает и создает сборку node_js, которая имеет java 7 и мой проект использует java 8
Я попробовал этот answer для python
используя
language: node_js
node_js:
- "0.10"
java: oraclejdk8
но это не сработало
Как добавить java 8?
Я использовал этот .yml
:
language: java
jdk:
- oraclejdk8
node_js: "0.10"
install: "npm install"
script: "npm test"
Теперь представляется возможным запустить несколько языков в одном файле .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:
- [email protected]
Похоже, что вы можете создать столько разных конфигураций, сколько захотите, используя эту функцию, рассматривая каждую запись в матрице как конфигурацию верхнего уровня. Конечно, если у вас есть какие-либо параметры, которые вы хотите установить, которые применяются ко всем языкам, вы можете сделать это на верхнем уровне, как я делаю здесь с разделом notifications:email
.
Когда все настроено, то при каждой сборке вы получаете что-то вроде этого. Boom.
В среде сборки Java Travis вы можете использовать nvm
для управления Node.js время выполнения:
.travis.yml
language: java
jdk:
- oraclejdk8
env:
- NODE_VERSION="0.12"
before_install:
- nvm install $NODE_VERSION
Если ваша версия Node совсем недавно, возможно, вам придется обновить 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
.
У моего проекта есть бэкэнд Python/Django и внешний интерфейс JS/Vue, как показано ниже:
├── 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
Вы не можете добавить несколько языков, которые объясняют поведение, которое вы видите, а параметр node_js
будет распознаваться только в проекте языка node. Вы можете использовать встроенный nvm
в TravisCI.
Например, вы можете включить
- nvm install 0.10
- nvm use 0.10
в разделе before_install
для загрузки последней версии v0.10.x node.