如何用多种语言设置Travis CI


98

我的项目同时使用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 尝试了这个答案

使用

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

但这没用

如何添加Java 8?


Answers:


116

现在似乎可以使用该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
      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的lint工具失败了:lint.travis-ci.org
meisteg

4
我不能说棉绒工具,但是我可以说我已经使用这种设置好几个月了,并且运行良好。
科迪亚克

我将此设置用于python和nodejs。python: 3.5我没有使用设置版本的方法,而是python:\n - "3.5"按照travis-ci的官方页面中的建议使用(注意这是两行)。构建失败,因为travis尝试检索python-["3.5"](请注意[")。你知道为什么会这样吗?单线工作。
CrazyFrog

3
这里有些奇怪:OP询问要在同一构建中设置多种语言,而不是设置多种语言,每种构建都使用一种。
FuzzyAmi

2
@meisteg使用官方的travis皮棉工具时,可以很好地进行验证。$ 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

如果您的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


那是我最喜欢的解决方案。
纳蒂姆'17

13

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

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

这个想法是在矩阵的工作中运行每个测试套件,一个用于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

也可以看看


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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.