Comment configurer Travis CI avec plusieurs langues
mon projet utilise à la fois nodejs et java
j'ai essayé de démarrer avec un build node_js puis d'installer java (puisqu'il s'agit d'un module npm)
mais les scripts pour installer java ont échoué, en plus Je ne pense pas qu'il soit nécessaire de l'installer quand il y a une construction avec java qui existe déjà.
est-ce que je dois commencer avec une construction java puis installer node?
je suis en train d'essayer cette
language: java
- oraclejdk8
language: node_js
node_js:
- "0.10"
qui ignore les 2 premières lignes qu'il semble et construit une construction node_js qui a java 7 et mon projet utilise java 8
j'ai essayé ce réponse pour python
utilisant
language: node_js
node_js:
- "0.10"
java: oraclejdk8
mais ça n'a pas marché
comment ajouter java 8?
5 réponses
il semble maintenant possible d'exécuter plusieurs langues en une seule .Travis.fichier yml utilisant la fonctionnalité matrix:include
. À titre d'exemple, mon github repo est organisé comme suit:
project/ - top-level github directory
project/backend - Python backend
project/backend/tests - Python tests
project/android/AppName - Android app
project/ios/AppName - iOS app
voici le .Travis.yml, qui exécute des tests en Python, Java et Objective-C:
matrix:
include:
- language: python
python: 2.7
before_script:
- cd backend/tests
script:
- python -m unittest discover
- language: android
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
il semble que vous pouvez construire autant de configurations différentes que vous le souhaitez en utilisant cette fonctionnalité, en traitant chaque entrée dans la matrice comme une configuration de haut niveau. Bien sûr, si vous voulez définir des paramètres qui s'appliquent à toutes les langues, vous pouvez le faire au niveau supérieur, comme je le fais ici avec la section notifications:email
.
quand tout est prêt, à chaque construction, on obtient quelque chose comme ça. Boom.
sur un environnement de construction Java Travis, vous pouvez utiliser nvm
pour gérer noeud.js temps de fonctionnement:
.Travis.yml
language: java
jdk:
- oraclejdk8
env:
- NODE_VERSION="0.12"
before_install:
- nvm install $NODE_VERSION
si votre version de noeud est très récente, vous pourriez avoir à mettre à jour nvm
aussi.
pour mettre à jour nvm
, écrivez ceci dans votre .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
l'exemple ci-dessus montre comment mettre à jour à nvm v0.31
, pour obtenir ensuite Node v5
.
j'ai utilisé ce .yml
:
language: java
jdk:
- oraclejdk8
node_js: "0.10"
install: "npm install"
script: "npm test"
vous ne pouvez pas ajouter plusieurs langues, ce qui explique le comportement que vous voyez, et le paramètre node_js
ne sera reconnu que dans un projet de langue de noeud. Ce que vous pouvez faire est d'utiliser le incorporé nvm
dans TravisCI.
Par exemple, vous pouvez inclure
- nvm install 0.10
- nvm use 0.10
dans votre section before_install
pour télécharger la dernière v0.10.x libération du noeud.
mon projet a un python / Django backend et un js / Vue frontend comme ci-dessous:
├── backend
│ ├── api
│ │ ├── tests
├── daemon
│ ├── frontend
│ │ ├── test
l'idée est d'exécuter chaque suite de test dans un matrix' job , un pour les tests Python / Django et l'autre pour les tests 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
voir aussi
- Comment fonctionnent les étapes de construction? doc officiel