Я хотел бы иметь два экземпляра машины PHP 7.2 на Travis CI — один с установленным bcmath, а другой — без него.
Мой файл .travis.yml выглядит так:
language: php
matrix:
fast_finish: true
allow_failures:
- php: nightly
include:
- php: 5.4
- php: 5.5
- php: 5.6
- php: 7.0
- php: 7.1
- php: 7.2
- php: 7.3
env:
- TEST_COVERAGE=true
- php: nightly
- php: hhvm
Так мне просто добавить еще одну строку - php: 7.2 в .travis.yml или как?
Для https://docs.travis-ci.com/user/languages/php/ я могу добавить расширения следующим образом:
before_install: echo "extension = <extension>.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
Таким образом, логично предположить, что для их удаления будет достаточно:
before_install: sed -i 's/extension = bcmath.so/#extension = bcmath.so/g' ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
Вероятно, я мог бы даже настроить таргетинг на конкретную версию так (не проверено):
before_install: if [ '$TRAVIS_PHP_VERSION' = '7.2' ]; then sed -i 's/extension = bcmath.so/#extension = bcmath.so/g' ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini ; fi
Но ничего из этого не дает мне две машины с PHP 7.2 — я могу использовать эти строки, чтобы иметь виртуальную машину одного типа или другого, но не обоих.
Есть идеи?






Вы можете использовать jobs вместо matrix в своем .travis.yml — см. Этапы сборки. Чтобы удалить функции bcmath, которые предварительно скомпилированы в PHP на travis, вам нужно самостоятельно скомпилировать его с дополнительной опцией:
language: php
jobs:
include:
- &STANDARD_TEST_JOB
stage: Test
php: 7.2
env: BCMATH = "on"
before_install:
- |
if [[ $BCMATH != "on" ]]; then
export PHP_BUILD_CONFIGURE_OPTS = "--disable-bcmath";
git clone git://github.com/php-build/php-build.git $HOME/.phpenv/plugins/php-build;
travis_wait phpenv install 7.2.19;
phpenv rehash;
phpenv global 7.2.19;
fi
php -v;
php -m;
-
<<: *STANDARD_TEST_JOB
php: 7.2
env: BCMATH = "off"
Вы можете запустить виртуальную машину в режиме отладки и подключиться к ней по ssh для анализа.