Continuous Integration #738
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Continuous Integration | |
on: | |
push: | |
paths-ignore: | |
- '**.md' | |
pull_request: | |
workflow_dispatch: | |
env: | |
COMPOSER_FLAGS: "--ansi --no-interaction --no-progress --prefer-dist" | |
COMPOSER_UPDATE_FLAGS: "" | |
script: demo/run.php | |
jobs: | |
phpunit: | |
name: PHPUnit | |
runs-on: ubuntu-latest | |
services: | |
redis: | |
image: redis | |
ports: | |
- 6379:6379 | |
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3 | |
strategy: | |
matrix: | |
php-version: | |
- 8.0 | |
dependencies: [highest, lowest] | |
os: [ubuntu-latest] | |
include: | |
- php-version: 8.1 | |
os: windows-latest | |
- php-version: 8.1 | |
os: macos-latest | |
- php-version: 8.2 | |
dependencies: lowest-ignore | |
os: ubuntu-latest | |
- php-version: 8.2 | |
dependencies: highest-ignore | |
os: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup PHP ${{ matrix.php-version }} | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php-version }} | |
coverage: pcov | |
ini-values: zend.assertions=1 | |
- name: Get composer cache directory | |
id: composer-cache | |
run: echo "::set-output name=dir::$(composer config cache-files-dir)" | |
- name: Cache dependencies | |
uses: actions/cache@v2 | |
with: | |
path: ${{ steps.composer-cache.outputs.dir }} | |
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} | |
restore-keys: ${{ runner.os }}-composer- | |
- name: Handle lowest dependencies update | |
if: contains(matrix.dependencies, 'lowest') | |
run: echo COMPOSER_UPDATE_FLAGS=$COMPOSER_UPDATE_FLAGS --prefer-lowest >> $GITHUB_ENV | |
- name: Handle ignore-platform-reqs dependencies update | |
if: contains(matrix.dependencies, 'ignore') | |
run: echo COMPOSER_FLAGS=$COMPOSER_FLAGS --ignore-platform-req=php >> $GITHUB_ENV | |
- name: Remove platform config to get latest dependencies for current PHP version | |
if: contains(matrix.dependencies, 'highest') || contains(matrix.dependencies, 'lowest') | |
run: composer config platform --unset | |
- name: Allow alpha releases for latest-deps builds to catch problems earlier | |
if: contains(matrix.dependencies, 'ignore') | |
run: composer config minimum-stability alpha | |
- name: Update dependencies | |
run: composer update ${{ env.COMPOSER_UPDATE_FLAGS }} ${{ env.COMPOSER_FLAGS }} | |
- name: Run test suite | |
run: ./vendor/bin/phpunit --coverage-clover=coverage.xml | |
- name: Upload coverage report | |
uses: codecov/codecov-action@v2 | |
with: | |
file: ./coverage.xml | |
- name: Update dependencies for demo | |
run: composer require doctrine/cache ^1 ${{ env.COMPOSER_UPDATE_FLAGS }} ${{ env.COMPOSER_FLAGS }} | |
- name: Run additional script | |
if: ${{ env.script }} | |
run: php ${{ env.script }} |