代码之家  ›  专栏  ›  技术社区  ›  Amplifier

Travis if语句未执行

  •  1
  • Amplifier  · 技术社区  · 8 年前

    由于某种原因,当我使用 if 语句它不会为其执行configure。这是我的全部 travis.yml 在下面

    特拉维斯。yml:

    language: php
    php:
        - '5.6.32'
        - '7.0.26'
        - '7.1.12'
        - '7.2.0'
    os:
        - windows
        - linux
    git:
        depth: 1
    matrix:
        fast_finish: true
    sudo: false
    before_install:
        - if [[ ${TRAVIS_PHP_VERSION:0:3} == "7.2.0" ]]; then git clone -b stable https://github.com/jedisct1/libsodium.git; fi
        - if [[ ${TRAVIS_PHP_VERSION:0:3} == "7.2.0" ]]; then cd libsodium && sudo ./configure && sudo make check && sudo make install && cd ..; fi
    install:
        - if [[ ${TRAVIS_PHP_VERSION:0:3} == "7.2.0" ]]; then pecl install libsodium; fi
        - if [[ ${TRAVIS_PHP_VERSION:0:3} == "7.2.0" ]]; then echo "extension=sodium.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi
        - travis_retry composer install --no-interaction
        - wget -c -nc --retry-connrefused --tries=0 https://github.com/satooshi/php-coveralls/releases/download/v1.0.1/coveralls.phar
        - chmod +x coveralls.phar
        - php coveralls.phar --version
    before_script:
        - mkdir -p build/logs
        - ls -al
    script:
        - ./vendor/bin/phpunit --coverage-clover build/logs/clover.xml
    after_success:
        - travis_retry php coveralls.phar -v
    branches:
        only: master
    cache:
        directories:
            - vendor
            - $HOME/.cache/composer
    

    所以出于某种原因

    - if [[ ${TRAVIS_PHP_VERSION:0:3} == "7.2.0" ]]; then 
         export git clone -b stable https://github.com/jedisct1/libsodium.git;
     fi
    

    不起作用,我从 this

    我的目标是在特定的PHP版本上执行特定的行。

    我有什么遗漏吗?

    1 回复  |  直到 8 年前
        1
  •  4
  •   Finwe    7 年前

    编辑:

    您提取了 TRAVIS_PHP_VERSION 并将其与5个字符进行比较。。这当然行不通。您可以尝试:

    if [[ ${TRAVIS_PHP_VERSION:0:5} == "7.2.0" ]]
    

    或

    if [[ ${TRAVIS_PHP_VERSION:0:3} == "7.2" ]]
    

    结束编辑

    我在Travis配置文件中运行脚本时遇到了一些问题,因为我需要空行和注释,Travis对此感到困惑。因此,一般来说,我建议在单独的bash文件中编写脚本。

    最简单的方法是在脚本文件中执行所有bash脚本,并在travis中使用脚本文件。yml公司

    before_install: ./travis-scripts/before_install.sh
    

    现在,您可以使用bash语法编写脚本,它们可以立即工作。

    如果仍要在travis文件中编写脚本,请尝试这样做(并非每次都对我有效):

    install: >
        if [[ ${TRAVIS_PHP_VERSION:0:3} == "7.2" ]]; then pecl install libsodium; fi;
        if [[ ${TRAVIS_PHP_VERSION:0:3} == "7.2" ]]; then echo "extension=sodium.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi;
        travis_retry composer install --no-interaction;
        wget -c -nc --retry-connrefused --tries=0 https://github.com/satooshi/php-coveralls/releases/download/v1.0.1/coveralls.phar;
        chmod +x coveralls.phar;
        php coveralls.phar --version;
    

    或者保持原样,只在if语句中加引号。

    推荐文章