web-dev-qa-db-fra.com

Comment configurer Travis CI en plusieurs langues

Mon projet utilise à la fois nodejs et Java

J'ai essayé de démarrer avec une construction node_js puis d'installer Java (puisqu'il s'agit d'un module npm)

mais les scripts à installer Java ont échoué. De plus, je ne pense pas qu'il soit nécessaire de l'installer lorsqu'il existe une version avec Java qui existe déjà.).

dois-je commencer avec un Java build puis installer le noeud?

J'essaye ça

language: Java
  - oraclejdk8
language: node_js
node_js:
  - "0.10"

qui semble ignorer les deux premières lignes et construit une construction node_js qui a Java 7 et mon projet utilise Java 8

J'ai essayé ceci réponse pour python

en utilisant

language: node_js
node_js:
  - "0.10"
Java: oraclejdk8

mais ça n'a pas marché

Comment puis-je ajouter Java 8?

86
Amr Draz

J'ai utilisé ceci .yml:

language: Java
jdk:
    - oraclejdk8
node_js: "0.10"
install: "npm install"
script: "npm test"
10
Amr Draz

Il semble maintenant possible d’exécuter plusieurs langues dans un fichier .travis.yml à l’aide de la commande matrix:include fonctionnalité. A titre d'exemple, mon dépôt Github 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 fichier .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
      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]

Il semble que vous puissiez créer autant de configurations différentes que vous le souhaitez à l'aide de cette fonctionnalité, en traitant chaque entrée de la matrice comme une configuration de niveau supérieur. Bien sûr, si vous souhaitez 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 le notifications:email section.

Une fois que tout est configuré, à chaque construction, vous obtenez quelque chose comme ça. Boom.

enter image description here

104
Codiak

Sur un environnement de construction Travis Java, vous pouvez utiliser nvm pour gérer Node.js runtimes:

. travis.yml

language: Java

jdk:
  - oraclejdk8

env:
  - NODE_VERSION="0.12"

before_install:
  - nvm install $NODE_VERSION

Si votre version de Node est très récente, vous devrez peut-être également mettre à jour nvm.

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 d'abord vers nvm v0.31, pour obtenir ensuite Node v5.

18
Benny Neugebauer

Mon projet a un backend Python/Django et une interface JS/Vue comme ci-dessous:

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

L'idée est d'exécuter chaque suite de tests dans un matrice , l'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 également

10
Édouard Lopez

Vous ne pouvez pas ajouter plusieurs langues, ce qui explique le comportement que vous observez, et le node_js paramètre ne sera reconnu que dans un projet de langage de nœud. Ce que vous pouvez faire, c'est utiliser l'incorporation nvm dans TravisCI. Par exemple, vous pouvez inclure - nvm install 0.10 - nvm use 0.10 dans votre before_install section pour télécharger la dernière version v0.10.x du noeud.

8
kevincolten