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

Travis CI : How to allow failures with a customized environment variable?

this answer 之后,我写了这个 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

但 Travis CI 仅将 php 每晚版本计为 "allowed to fail" 版本。我是否以错误的方式使用了环境变量?


更新

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

matrix:
    include:
        - php: 5.5
          env: SYMFONY_VERSION=2.8.*@dev
    allow_failures:
        - env: SYMFONY_VERSION=2.8.*@dev

但我还是不明白为什么另一种方法不起作用。

您在 allow_failures: 中指定的是您允许的失败次数

"You can define rows that are allowed to fail in the build matrix. Allowed failures are items in your build matrix that are allowed to fail without causing the entire build to fail. This lets you add in experimental and preparatory builds to test against versions or configurations that you are not ready to officially support."

不幸的是,我相信矩阵读取您的第一组代码的方式与 php 每晚版本和 "allowed to fail" 版本一样,其中环境是每晚的一部分。

由于 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

根据 this issuephpenv 键必须完美匹配。 env 可以是单个值或数组,但在这两种情况下它都必须是完美匹配。所以如果你想要你的构建:

- php: 5.5
  env: SYMFONY_VERSION=2.8.*@dev TEST_GROUP=canFail

要允许失败,您必须提供整个 env 密钥 SYMFONY_VERSION=2.8.*@dev TEST_GROUP=canFail 和整个 env 密钥以及 PHP 版本(如果您有相同的 env 密钥对于不同的 PHP 版本)。