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?

48
demandé sur Codiak 2014-12-25 08:56:44

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.

enter image description here

62
répondu Codiak 2017-05-18 17:27:25

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 .

11
répondu Benny Neugebauer 2016-07-13 08:17:09

j'ai utilisé ce .yml :

language: java
jdk:
    - oraclejdk8
node_js: "0.10"
install: "npm install"
script: "npm test"
6
répondu Amr Draz 2014-12-26 16:26:52

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.

5
répondu kevincolten 2015-08-10 20:07:48

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

0
répondu Édouard Lopez 2018-09-19 21:33:52