在 Matrix with Travis CI 中使用 Ruby 和 Shell 的多个操作系统

Using Multiple Operating Systems with Ruby and Shell in a Matrix with Travis CI

我正在尝试创建一个 CI 测试,该测试使用 Linux 上的 rvm 使用多个 Ruby 版本执行测试,但我想在 [=31] 上执行另一个测试=] 使用 bash shell.

我尝试了一些配置,但如果我在矩阵中有额外的 OS 和语言,它们不允许我创建或使用多个 ruby 版本。

例如,如果我使用以下配置,我将为 Linux 获得 3 个不同的行项目,具有不同的 Ruby 版本:

os:
  - linux

dist: xenial
language: ruby
cache: bundler

rvm:
  - 2.4.5
  - 2.5.4
  - 2.6.2

script:
  - ruby -v

如果我添加一个矩阵并包含不同的 OS 和语言,我只会在矩阵中得到 2 个行项目——一个用于 Linux (ruby) 和一个Windows (shell)。 Windows OS 工作正常,但 Linux 只执行 rvm 列表中的第一个 ruby 版本。

matrix:
  include:
    - os: linux
      dist: xenial
      language: ruby
      cache: bundler
      rvm: 
        - 2.4.5
        - 2.5.4
        - 2.6.2
      script:
        - ruby -v
    - os: windows
      language: shell
      script:
        - powershell -Command Write-Host Test

我想为 Linux 列出 3 个具有不同 ruby 版本的构建作业,但在 Windows 上只有一个 shell 构建作业。是否可以在具有多个 OS 和 Travis CI 语言的矩阵中使用 rvm?

您必须为每个构建作业定义一个 include 块:

matrix:
  include:
    - os: linux
      dist: xenial
      language: ruby
      cache: bundler
      rvm: 2.4.5
      script:
        - ruby -v
    - os: linux
      dist: xenial
      language: ruby
      cache: bundler
      rvm: 2.5.4
      script:
        - ruby -v
    - os: linux
      dist: xenial
      language: ruby
      cache: bundler
      rvm: 2.6.2
      script:
        - ruby -v
    - os: windows
      language: shell
      script:
        - powershell -Command Write-Host Test