Travis CI:如何通过自定义环境变量允许失败?

Iva*_*ele 22 travis-ci

根据这个答案,我写了这个Travis配置文件:

language: php

php:
    - 5.3
    - 5.4
    - 5.5
    - 5.6
    - 7
    - hhvm
    - nightly

branches:
    only:
        - master
        - /^\d+\.\d+\.\d+$/

matrix:
    fast_finish: true
    include:
        - php: 5.3
          env: deps="low"
        - php: 5.5
          env: SYMFONY_VERSION=2.3.*
        - php: 5.5
          env: SYMFONY_VERSION=2.4.*
        - php: 5.5
          env: SYMFONY_VERSION=2.5.*
        - php: 5.5
          env: SYMFONY_VERSION=2.6.*
        - php: 5.5
          env: SYMFONY_VERSION=2.7.*
        - php: 5.5
          env: SYMFONY_VERSION=2.8.*@dev TEST_GROUP=canFail
    allow_failures:
        - php: nightly
        - env: TEST_GROUP=canFail

before_script:
    - composer self-update
    - if [ "$SYMFONY_VERSION" != "" ]; then composer require --dev --no-update symfony/symfony=$SYMFONY_VERSION; fi
    - if [ "$deps" = "low" ]; then composer update --prefer-lowest; fi
    - if [ "$deps" != "low" ]; then composer update --prefer-source; fi

script: phpunit
Run Code Online (Sandbox Code Playgroud)

但Travis CI只将php nightly版本视为"允许失败"版本.我是否以错误的方式使用环境变量?


UPDATE

只是一个精度,我知道我可以直接写这样的环境:

matrix:
    include:
        - php: 5.5
          env: SYMFONY_VERSION=2.8.*@dev
    allow_failures:
        - env: SYMFONY_VERSION=2.8.*@dev
Run Code Online (Sandbox Code Playgroud)

但我仍然不明白为什么其他方式不起作用.

Wal*_*sen 11

您指定的allow_failures:是您允许的失败

"您可以定义构建矩阵中允许失败的行.允许的失败是构建矩阵中允许失败而不会导致整个构建失败的项目.这使您可以添加实验和预备构建以针对版本进行测试或您尚未准备好正式支持的配置."

不幸的是,我相信矩阵读取你的第一组代码的方式是php nightly版本,因为"允许失败"的版本与环境作为夜间的一部分.

由于Travis如何允许失败,它必须是完全匹配,您不能只指定env:为允许的失败,您必须为每个php版本指定env:您想要允许作为失败的示例

allow_failures:
  - php: 5.3
    env: SYMFONY_VERSION=2.8.*@dev TEST_GROUP=canFail
  - php: 5.4
    env: SYMFONY_VERSION=2.8.*@dev TEST_GROUP=canFail
  - php: 5.5
    env: SYMFONY_VERSION=2.8.*@dev TEST_GROUP=canFail
  - php: 5.6
    env: SYMFONY_VERSION=2.8.*@dev TEST_GROUP=canFail
  - php: 7.0
    env: SYMFONY_VERSION=2.8.*@dev TEST_GROUP=canFail
  - php: hhvm
    env: SYMFONY_VERSION=2.8.*@dev TEST_GROUP=canFail
  - php: nightly # Allow all tests to fail for nightly
Run Code Online (Sandbox Code Playgroud)