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

Но Travis CI учитывает только ночную версию php как версию с разрешенным отказом. Я использую переменные среды неправильно?


UPDATE

Просто точность, я знаю, что я могу напрямую написать такую ​​среду:

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

но все же я не понимаю, почему другой способ не работает.

Ответы

Ответ 1

То, что вы указали в allow_failures:, - это разрешенные вами ошибки

"Вы можете определить строки, которые разрешены сбой в матрице построения. Разрешенные ошибки - это элементы в вашей матрице сборки, которые разрешены, чтобы не вызывать build to fail. Это позволяет добавлять экспериментальные и подготовительные сборки для тестирования версий или конфигураций, которые вы не готовы официально поддерживать" .

К сожалению, я считаю, что матрица читает ваш первый набор кода как ночную версию php, так как версия "разрешена для отказа" со средой как часть ночной.

Из-за того, что 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

Ответ 2

В соответствии с этот вопрос, клавиши php и env должны соответствовать отлично. 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).