2个Travis CI实例上的PHP 7.2,一个带有扩展名,一个没有扩展名

时间:2019-05-27 00:21:54

标签: php travis-ci

我想在Travis CI上有两个PHP 7.2机器实例-一个实例安装了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

那么我是否要在.travis.yml中添加另一行- php: 7.2呢?

每个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机器-我可以使用这些行来拥有一种类型或另一种类型的VM,但不能同时使用两种类型。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以在jobs中使用matrix代替.travis.yml-请参见Build-Stages。要删除bcmath函数(这些函数已在travis上预编译为PHP),则必须自己使用附加选项进行编译:

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"