web-dev-qa-db-ja.com

複数の言語でTravis CIをセットアップする方法

私のプロジェクトはnodejsとJavaの両方を使用しています

Node_jsビルドから始めて、Java(これはnpmモジュールであるため)をインストールしました

しかし、インストールするスクリプトJavaが失敗しました。さらに、すでに存在するビルドがJavaである場合、インストールする必要はないと思います。

Javaビルドしてノードをインストールしますか?

私はこれを試しています

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

これは、最初の2行を無視し、Java 7で、私のプロジェクトはJava 8を使用するnode_jsビルドをビルドします

私はこれを試しました answer Python

を使用して

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

しかし、それはうまくいきませんでした

Java 8?

86
Amr Draz

これを使用しました.yml

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

matrix:include機能を使用して、1つの.travis.ymlファイルで複数の言語を実行できるようになりました。例として、私の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

Python、Java、Objective-Cでテストを実行する.travis.ymlは次のとおりです。

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セクションで行うように、トップレベルでそれを行うことができます。

すべてのセットアップが完了すると、ビルドごとに次のようになります。ブーム。

enter image description here

104
Codiak

Travis Javaビルド環境では、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を取得する方法を示しています。

18

私のプロジェクトには、以下のようなPython/DjangoバックエンドとJS/Vueフロントエンドがあります。

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

アイデアは、各テストスイートを マトリックス 'ジョブ で実行することです。1つはPython/Djangoテスト用、もう1つは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

こちらもご覧ください

10
Édouard Lopez

表示されている動作を説明する複数の言語を追加することはできません。また、node_js設定は、ノード言語プロジェクトでのみ認識されます。できることは、TravisCIに組み込まれている nvm を利用することです。たとえば、- nvm install 0.10 - nvm use 0.10あなたのbefore_installセクションは、ノードの最新v0.10.xリリースをダウンロードします。

8
kevincolten