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).