161 lines
5.0 KiB
YAML
161 lines
5.0 KiB
YAML
# From https://github.com/sebastianbergmann/phpunit/blob/20ab19d3aed56fccf9569cd33c6cd0baab0ec272/.github/workflows/ci.yml
|
|
# (With many modifications)
|
|
|
|
on:
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
name: CI
|
|
|
|
jobs:
|
|
coding-guidelines:
|
|
name: Coding Guidelines
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Install PHP
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: 8.0
|
|
coverage: none
|
|
|
|
- name: Install dependencies
|
|
run: composer install --no-ansi --no-interaction --no-progress
|
|
|
|
- name: Run phpcs
|
|
run: composer cs
|
|
|
|
- name: Run linter
|
|
run: composer lint
|
|
|
|
backward-compatibility:
|
|
name: Backward Compatibility
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Fetch tags
|
|
run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
|
|
|
|
- name: Install PHP with extensions
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: 7.4
|
|
coverage: none
|
|
extensions: intl
|
|
|
|
- name: Install roave/backward-compatibility-check
|
|
run: |
|
|
mkdir -p tools
|
|
composer --working-dir=tools require roave/backward-compatibility-check:^5 --no-update
|
|
composer --working-dir=tools config --no-plugins allow-plugins.ocramius/package-versions true
|
|
composer --working-dir=tools update
|
|
|
|
- name: Run roave/backward-compatibility-check
|
|
run: ./tools/vendor/bin/roave-backward-compatibility-check --from=5.0.0
|
|
|
|
tests:
|
|
name: Tests
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
env:
|
|
PHP_EXTENSIONS: dom, json, libxml, mbstring, pdo_sqlite, soap, xml, xmlwriter
|
|
|
|
strategy:
|
|
matrix:
|
|
os:
|
|
- ubuntu-latest
|
|
- windows-latest
|
|
|
|
php-version:
|
|
- "8.0"
|
|
|
|
php-ini-values:
|
|
- assert.exception=1, zend.assertions=1, opcache.enable=1, opcache.enable_cli=1, opcache.optimization_level=-1, opcache.jit_buffer_size=4096M, opcache.jit=1205
|
|
|
|
dependencies:
|
|
- locked
|
|
|
|
include:
|
|
- os: ubuntu-latest
|
|
php-version: "8.1"
|
|
dependencies: highest
|
|
php-ini-values: assert.exception=1, zend.assertions=1, opcache.enable=1, opcache.enable_cli=1, opcache.optimization_level=-1, opcache.jit_buffer_size=4096M, opcache.jit=1205
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Install PHP with extensions
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: ${{ matrix.php-version }}
|
|
coverage: pcov
|
|
extensions: ${{ env.PHP_EXTENSIONS }}
|
|
ini-values: ${{ matrix.php-ini-values }}
|
|
|
|
- name: Determine composer cache directory on Linux
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: echo "COMPOSER_CACHE_DIR=$(composer config cache-dir)" >> $GITHUB_ENV
|
|
|
|
- name: Determine composer cache directory on Windows
|
|
if: matrix.os == 'windows-latest'
|
|
run: Add-Content -Path $ENV:GITHUB_ENV -Value "COMPOSER_CACHE_DIR=~\AppData\Local\Composer"
|
|
|
|
- name: Cache dependencies installed with composer
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: ${{ env.COMPOSER_CACHE_DIR }}
|
|
key: php${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('**/composer.json') }}
|
|
restore-keys: |
|
|
php${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-
|
|
|
|
- name: Make sure composer.json is valid before we start modifyig it
|
|
run: composer validate
|
|
|
|
- name: Clear platform php configuration in case we need to update phpunit
|
|
run: composer config --unset platform.php
|
|
|
|
- name: Update phpunit if dependencies are locked in case phpunit version in lock file is not compatible
|
|
if: matrix.dependencies == 'locked'
|
|
run: |
|
|
composer install --no-ansi --no-interaction --no-progress
|
|
composer update --no-ansi --no-interaction --no-progress phpunit/phpunit --with-all-dependencies
|
|
|
|
- name: Install lowest dependencies with composer
|
|
if: matrix.dependencies == 'lowest'
|
|
run: composer update --no-ansi --no-interaction --no-progress --prefer-lowest
|
|
|
|
- name: Install highest dependencies with composer
|
|
if: matrix.dependencies == 'highest'
|
|
run: composer update --no-ansi --no-interaction --no-progress
|
|
|
|
# Use "script" hack to give us a tty. See https://github.com/actions/runner/issues/241#issuecomment-745902718
|
|
- name: Run tests with phpunit
|
|
if: matrix.os != 'windows-latest'
|
|
shell: 'script -q -e -c "bash {0}"'
|
|
run: composer unit
|
|
|
|
# Run without "script" on Windows
|
|
- name: Run tests with phpunit
|
|
if: matrix.os == 'windows-latest'
|
|
run: composer unit
|
|
|
|
- name: Publish code coverage to Codecov
|
|
if: matrix.os == 'ubuntu-latest' && matrix.php-version == '8.0'
|
|
run: bash <(curl -s https://codecov.io/bash)
|