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:
中指定的是您允许的失败次数
不幸的是,我相信矩阵读取您的第一组代码的方式与 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 issue,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 版本)。
在 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:
中指定的是您允许的失败次数
不幸的是,我相信矩阵读取您的第一组代码的方式与 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 issue,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 版本)。