2016-09-25 130 views
2

我有一个Travis CI构建矩阵,用于测试最近的g ++和clang。除了这两个打算的条目之外,我还看到一个条目AFAIK,在包含矩阵中没有指定。我该如何抑制或删除第三个构建配置?Travis CI构建矩阵包含虚假条目?

.travis.yml:Travis的输出从full details截取的

language: generic 
os: linux 
script: ./bootstrap && ./configure && make all && make check && make distcheck 
matrix: 
    include: 
    - env: COMPILER_NAME=gcc CXX=g++-5 CC=gcc-5 
     addons: 
     apt: 
      sources: 
      - ubuntu-toolchain-r-test 
      packages: 
      - autotools-dev 
      - g++-5 
    - env: COMPILER_NAME=clang CXX=clang++-3.8 CC=clang-3.8 
     addons: 
     apt: 
      sources: 
      - ubuntu-toolchain-r-test 
      - llvm-toolchain-precise-3.8 
      packages: 
      - autotools-dev 
      - clang-3.8 

段: Travis failure screenshot

回答

1

从文档,“操作系统键也乘以矩阵”:

如果您的代码在多个操作系统上它可能应该 多个操作系统上进行测试使用。特拉维斯CI可以在Linux 和OS X的测试

为了使多个操作系统上测试添加OS关键看你 .travis.yml:

OS:

  • Linux的
  • OSX

根据运行特定版本的操作系统,$ TRAVIS_OS_NAME变量的值设置为linux或osx ,因此您可以使用它来调整构建脚本的条件。

如果您已经在使用构建矩阵来测试多个版本,那么操作系统密钥也会使矩阵相乘。

来源:https://docs.travis-ci.com/user/multi-os/

构建具有多个os键:

例如,对于每个单独 “OS” 键时,它创建另一个构建。请参阅此处:https://github.com/jaredsburrows/cplusplus-cmake-template/blob/master/.travis.yml#L3https://github.com/jaredsburrows/open-virus/blob/master/.travis.yml#L3

由于默认的“os”是linux,所以在你自己的问题中暗示你有3个独立的版本,都使用“os:linux”。

矩阵构建具有不同os键:

例如,每个键被现在在在单独的行矩阵指定。请参阅:https://github.com/jaredsburrows/cs-interview-questions/blob/master/.travis.yml#L3https://github.com/jaredsburrows/android-gif-example/blob/master/.travis.yml#L8

在你的问题中,你不仅指定了一个“矩阵”的构建,而且是一个使用不同的操作系统的普通构建。指定“矩阵”时,您将覆盖默认的“os”版本。但是你明确地写了“os”和“matrix”,意味着你想要3个独立的版本。

1

移动语言和OS部到基质包括作品。然而,我仍然没有认识到为什么。

https://github.com/RhysU/descendu/commit/ab275ea79b4ff315f99604d6d7f26dd2488aa266

+0

所以你回答了你自己的问题,或者这是一个评论? –

+1

回答了我自己的问题,但仍然很乐意奖励奖金,以便了解为什么这种简单的重新格式化完成了我想要的任务。也就是说,什么定义矩阵内容? –