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

时间:2014-12-25 05:56:45

标签: travis-ci

我的项目使用nodejs和java

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

但是安装java的脚本失败了,而且我认为当有一个已经存在的java版本时,需要安装它。

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

我正在尝试这个

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

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

我为python

尝试了这个answer

使用

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

但那不起作用

如何添加java 8?

6 个答案:

答案 0 :(得分:95)

现在似乎可以使用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

答案 1 :(得分:15)

在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

答案 2 :(得分:9)

我使用了.yml

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

答案 3 :(得分:9)

我的项目有一个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

另请参见

答案 4 :(得分:8)

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

答案 5 :(得分:0)

根据documentation

jobs:
  include:
    - language: python
      python: 3.8
      script:
      - python -c "print('Hi from Python!')"

    - language: node_js
      node_js: 12
      script:
      - node -e "console.log('Hi from NodeJS!')"

    - language: java
      jdk: openjdk8
      script:
      - javac -help

Here是一个生产示例。