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


98

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

node_jsビルドから始めて、javaをインストールしてみました(これはnpmモジュールなので)

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

Javaビルドから始めてノードをインストールする必要がありますか?

私はこれを試しています

language: java
  - oraclejdk8
language: node_js
node_js:
  - "0.10"

思われる最初の2行を無視し、java 7を含むnode_jsビルドをビルドし、私のプロジェクトはjava 8を使用します

私はこの答えをPythonで試しました

を使用して

language: node_js
node_js:
  - "0.10"
java: oraclejdk8

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

Java 8を追加するにはどうすればよいですか?


回答:


115

この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:
    - yourname@gmail.com

マトリックスの各エントリを最上位の構成として扱うことにより、この機能を使用して好きなだけ多くの異なる構成を構築できるようです。もちろん、すべての言語に適用する設定したいパラメーターがある場合は、notifications:emailセクションでここで行うように、最上位でそれを行うことができます。

すべてがセットアップされると、ビルドごとに次のような結果が得られます。ブーム。

ここに画像の説明を入力してください


2
これは有望に見えましたが、travis
meisteg

4
lintツールと話すことはできませんが、このようなセットアップを数か月間使用していて、完全に機能していると言えます。
Codiak 2017

私はこのセットアップをpythonとnodejsに使用しました。を使用python: 3.5してバージョンを設定する代わりにpython:\n - "3.5"、travis-ciの公式ページで推奨されているとおりに使用しました(これらは2つの別々の行であることに注意してください)。travisが取得しようとするため、ビルドは失敗しますpython-["3.5"][およびに注意してください")。なぜそうなのか知っていますか?ワンライナーで動作します。
CrazyFrog 2017年

3
ここで奇妙な点があります。OPは、ビルドごとに複数の言語を設定するのではなく、同じビルドで複数の言語を設定することについて尋ねました。
FuzzyAmi

2
@meisteg は、公式の travis lintツールを使用するときにそれを正常に検証します。$ travis lint ~/Desktop/test.yml Hooray, /Users/nathanf/Desktop/test.yml looks valid :)
ネイサンF.

23

Travis Javaビルド環境では、を使用nvmしてNode.jsランタイムを管理できます。

.travis.yml

language: java

jdk:
  - oraclejdk8

env:
  - NODE_VERSION="0.12"

before_install:
  - nvm install $NODE_VERSION

ノードのバージョンが非常に新しい場合は、更新する必要がある場合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


それが私のお気に入りのソリューションです。
Natim

13

私のプロジェクトには、以下のような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

こちらもご覧ください


12

私はこれを使いました.yml

language: java
jdk:
    - oraclejdk8
node_js: "0.10"
install: "npm install"
script: "npm test"

10

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


2
しかし、私は自分で答えた構成ファイルを使ってなんとかやりました
Amr Draz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.