sandfoxme/monsterid

View on GitHub
.gitlab-ci.yml

Summary

Maintainability
Test Coverage
stages:
  - test
  - report

cache:
  key: composer-cache
  paths:
    - .composer-cache/

.test:
  before_script:
    # install system packages
    - apt-get update && apt-get install -y git unzip zlib1g-dev libpng-dev
    # install extensions
    - docker-php-ext-install gd
    - if [ "$INSTALL_XDEBUG" -eq 1 ]; then curl --location https://github.com/FriendsOfPHP/pickle/releases/latest/download/pickle.phar --output pickle.phar; php pickle.phar install --defaults xdebug; docker-php-ext-enable xdebug; fi
    # install composer
    - php -r "copy('https://composer.github.io/installer.sig', '/tmp/composer.sig');"
    - php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');"
    - php -r '$expected = file_get_contents("/tmp/composer.sig"); $actual = hash_file("sha384", "/tmp/composer-setup.php"); exit(abs(strcmp($expected, $actual)));'
    - php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
    - chmod +x /usr/local/bin/composer
    - rm /tmp/composer-setup.php /tmp/composer.sig
    # cache dependencies
    - composer config -g cache-dir "$(pwd)/.composer-cache"
  script:
    - composer update
    - vendor/bin/phpunit

# main test matrix
test:
  extends: .test
  stage: test
  image: ${ARCH}/php:${PHP_VERSION}
  parallel:
    matrix:
      - PHP_VERSION:
          - '8.0' # lowest version
          - '8.2' # native random
          - '8'   # latest 8
        ARCH:
          - amd64
          - i386

# coverage
coverage:
  variables:
    INSTALL_XDEBUG: 1
  extends: .test
  stage: report
  only:
    - master
    - tags
  image: php:8.0
  script:
    - composer update
    - XDEBUG_MODE=coverage vendor/bin/phpunit --coverage-clover coverage.xml
    - bash <(curl -s https://codecov.io/bash)