首页 文章

如何使用多种语言设置Travis CI

提问于
浏览
57

我的项目使用nodejs和java

我尝试使用node_js构建然后安装java(因为这是一个npm模块)

但是安装java的脚本失败了,而且我不认为在存在已经存在的java的构建时需要安装它 .

我应该从Java构建开始然后安装节点吗?

我正在尝试这个

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

忽略它看起来的前两行并构建一个node_js构建,它有java 7,我的项目使用java 8

我试过这个answer for python

运用

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

但那没用

我怎样才能添加java 8?

5 回答

  • 69

    现在似乎可以使用 matrix:include 功能在一个.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
    

    这是.travis.yml,它在Python,Java和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
    

    通过将矩阵中的每个条目视为顶级配置,您似乎可以使用此功能构建任意数量的不同配置 . 当然,如果您要设置适用于所有语言的任何参数,您可以在顶层执行此操作,就像我在此处使用 notifications:email 部分一样 .

    当它全部设置好后,在每个构建中,你都会得到这样的东西 . 繁荣 .

    enter image description here

  • 6

    在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 .

  • 6

    我用了这个 .yml

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

    您无法添加多种语言,这可以解释您所看到的行为,并且只能在节点语言项目中识别 node_js 设置 . 您可以做的是利用TravisCI中的合并nvm . 例如,您可以在 before_install 部分中包含 - nvm install 0.10 - nvm use 0.10 以下载节点的最新v0.10.x版本 .

  • 2

    我的项目有一个Python / Django后端和一个JS / Vue前端,如下所示:

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

    我们的想法是在matrix' job中运行每个测试套件,一个用于Python / Django测试,另一个用于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
    

    另见

相关问题