为什么Travis CI忽略了我对特定Ruby版本的请求?

时间:2017-04-22 09:35:08

标签: travis-ci

我有一个像这样的构建,它在一年前工作:

language: java
cache:
  directories:
    - $HOME/.m2
jdk:
  - oraclejdk8
install:
  - gem install buildr
script: buildr clean upload

但不幸的是,其中一个库buildr现在需要Ruby 2.0:

ERROR:  Error installing buildr:
    net-ssh requires Ruby version >= 2.0.

(资料来源:https://travis-ci.org/trejkaz/hex-components/builds/224629263

所以我尝试按如下方式更新构建:

language: java
cache:
  directories:
    - $HOME/.m2
jdk:
  - oraclejdk8
rvm:
  - 2.0
install:
  - gem install buildr
script: buildr clean upload

错误是一样的:

ERROR:  Error installing buildr:
    net-ssh requires Ruby version >= 2.0.

我尽可能地遵循文档,似乎它并没有使用我特别要求的Ruby版本。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

无法安装buildr的最初原因是因为Travis CI的当前映像是Ubuntu 12.04,它为系统Ruby提供了Ruby 1.8。很快,这将更新到Ubuntu 14.04,它有Ruby 1.9用于系统的Ruby安装。不幸的是,这两个都低于您需要为项目安装gem所需的2.0。

您尝试使用rvm的方法是正确的想法,但不适用于language: java。但是,它适用于language: ruby。由于支持jdklanguage: ruby密钥可以方便地与JRuby一起使用。请注意以下文档:

https://docs.travis-ci.com/user/languages/ruby/

.travis.yml进行略微修改会让您前进:

language: ruby
cache:
  directories:
    - $HOME/.m2
jdk:
  - oraclejdk8
rvm:
  - 2.0
install:
  - gem install buildr
script: buildr clean upload

正如您在评论中所指出的那样,Travis CI在使用language定义基础环境时会对一个不是多语言的项目做出大胆而危险的假设,这可能导致您在你的问题。