dist: bionic

language: php

branches:
  only:
    - /.*/

services:
  - docker

cache:
  directories:
    - $HOME/.composer/cache/files

jobs:
  fast_finish: true
  allow_failures:
    - php: 'nightly'
  include:
    - name: "CI - 8.0"
      php: 'nightly'
      env:
        - COMPOSER_FLAGS='--ignore-platform-reqs'
    - name: "CI - 7.4"
      php: '7.4'
      env:
        - COMPOSER_FLAGS=''

before_install:
  - echo 'extension = apcu.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
  - phpenv config-rm xdebug.ini || return 0
  - sudo ./data/infra/ci/install-ms-odbc.sh
  - docker-compose -f docker-compose.yml -f docker-compose.ci.yml up -d shlink_db_ms shlink_db shlink_db_postgres shlink_db_maria
  - yes | pecl install pdo_sqlsrv-5.9.0preview1 swoole-4.5.5 pcov

install:
  - composer self-update
  - composer install --no-interaction --prefer-dist $COMPOSER_FLAGS

before_script:
  - docker-compose exec shlink_db_ms /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'Passw0rd!' -Q "CREATE DATABASE shlink_test;"
  - mkdir build
  - export DOCKERFILE_CHANGED=$(git diff ${TRAVIS_COMMIT_RANGE:-origin/main} --name-only | grep Dockerfile)

script:
  - composer ci
  - bin/test/run-api-tests.sh
  - if [[ ! -z "${DOCKERFILE_CHANGED}" && "${TRAVIS_PHP_VERSION}" == "7.4" ]]; then docker build -t shlink-docker-image:temp . ; fi

after_success:
  - rm -f build/clover.xml
  - wget https://phar.phpunit.de/phpcov-7.0.2.phar
  - php phpcov-7.0.2.phar merge build --clover build/clover.xml
  - wget https://scrutinizer-ci.com/ocular.phar
  - php ocular.phar code-coverage:upload --format=php-clover build/clover.xml