Skip to content

Main

Main #2730

Workflow file for this run

---
name: Main
on:
push:
branches: [ main, develop, wip ]
# As of September 19, 2023, these branches-ignore patterns don't work due to
# a bug in GitHub Actions See https://github.com/actions/runner/issues/2324
# Ditto below.
paths-ignore:
- '.idea/**'
- '**/*.md'
pull_request:
branches: [ develop ]
paths-ignore:
- '.idea/**'
- '**/*.md'
schedule:
# Every Monday at 00:00:00 UTC.
# @see https://crontab.cronhub.io/
- cron: "0 0 * * 1"
jobs:
static_analysis:
name: "Static Analysis"
runs-on: ubuntu-latest
steps:
- name: "Set up PHP"
uses: shivammathur/setup-php@v2 # https://github.com/marketplace/actions/setup-php-action
with:
php-version: "8.2"
coverage: none
- name: "Checkout code"
uses: actions/checkout@v4 # https://github.com/marketplace/actions/checkout
- name: "Install dependencies"
uses: ramsey/composer-install@v3 # https://github.com/marketplace/actions/install-composer-dependencies
- name: "Run all static analysis tools"
run: "composer static"
tests:
name: "Tests: ${{ matrix.os }} / ${{ matrix.php }} / ${{ matrix.dependencies }}${{ matrix.os == 'ubuntu' && matrix.dependencies == 'high' && matrix.php == '8.3' && ' w/ coverage' || '' }}"
runs-on: "${{ matrix.os }}-latest"
strategy:
fail-fast: false
matrix:
os: [ ubuntu, macos, windows ]
php: [ "8.1", "8.2", "8.3" ]
dependencies: [ low, high ]
steps:
- name: "Install rsync"
uses: GuillaumeFalourd/setup-rsync@v1.2 # https://github.com/marketplace/actions/setup-rsync
- name: "Set up PHP w/ Coverage"
if: ${{ matrix.os == 'ubuntu' && matrix.dependencies == 'high' && matrix.php == '8.3' }}
uses: shivammathur/setup-php@v2 # https://github.com/marketplace/actions/setup-php-action
with:
php-version: "${{ matrix.php }}"
extensions: gd
ini-values: zend.assertions=1
- name: "Set up PHP w/o Coverage"
if: ${{ !( matrix.os == 'ubuntu' && matrix.dependencies == 'high' && matrix.php == '8.3' ) }}
uses: shivammathur/setup-php@v2 # https://github.com/marketplace/actions/setup-php-action
with:
php-version: "${{ matrix.php }}"
coverage: none
extensions: gd
ini-values: zend.assertions=1
- name: "Debugging info"
run: |
rsync --version | head -1
php -i
- name: "Checkout code"
uses: actions/checkout@v4 # https://github.com/marketplace/actions/checkout
- name: "Install dependencies"
uses: ramsey/composer-install@v3 # https://github.com/marketplace/actions/install-composer-dependencies
with:
dependency-versions: "${{ matrix.dependencies }}est"
- name: "Run core tests with coverage"
run: "composer test"
if: ${{ matrix.os == 'ubuntu' && matrix.dependencies == 'high' && matrix.php == '8.3' }}
# There's no reason to generate coverage data on multiple jobs--the result should be the same.
- name: "Run core tests without coverage"
run: "./vendor/bin/phpunit --no-coverage --testsuite=all --exclude-group=windows_only"
if: ${{ runner.os != 'Windows' && !( matrix.os == 'ubuntu' && matrix.dependencies == 'high' && matrix.php == '8.3' ) }}
- name: "Run Windows tests"
run: "./vendor/bin/phpunit --no-coverage --testsuite=all --exclude-group=no_windows"
if: ${{ runner.os == 'Windows' }}
performance:
name: "Performance: ${{ matrix.os }}"
runs-on: "${{ matrix.os }}-latest"
strategy:
fail-fast: false
matrix:
os: [ ubuntu, windows ]
steps:
- name: "Install rsync"
uses: GuillaumeFalourd/setup-rsync@v1.2 # https://github.com/marketplace/actions/setup-rsync
- name: "Set up PHP"
uses: shivammathur/setup-php@v2 # https://github.com/marketplace/actions/setup-php-action
with:
php-version: "8.2"
coverage: none
- name: "Checkout code"
uses: actions/checkout@v4 # https://github.com/marketplace/actions/checkout
- name: "Install dependencies"
uses: ramsey/composer-install@v3 # https://github.com/marketplace/actions/install-composer-dependencies
- name: "Run performance tests"
run: "composer phpbench -- --progress=plain --ansi"
compatability:
name: "Compatability"
runs-on: ubuntu-latest
steps:
- name: "Install rsync"
uses: GuillaumeFalourd/setup-rsync@v1.2 # https://github.com/marketplace/actions/setup-rsync
- name: "Set up PHP"
uses: shivammathur/setup-php@v2 # https://github.com/marketplace/actions/setup-php-action
with:
php-version: "8.3"
coverage: none
- name: "Checkout code"
uses: actions/checkout@v4 # https://github.com/marketplace/actions/checkout
- name: "Install dependencies"
uses: ramsey/composer-install@v3 # https://github.com/marketplace/actions/install-composer-dependencies
- name: "Run compatability tests"
run: "composer compatability"
mutation:
name: "Mutation"
runs-on: ubuntu-latest
steps:
- name: "Set up PHP"
uses: shivammathur/setup-php@v2 # https://github.com/marketplace/actions/setup-php-action
with:
php-version: "8.2"
extensions: gd
ini-values: zend.assertions=1
- name: "Checkout code"
uses: actions/checkout@v4 # https://github.com/marketplace/actions/checkout
- name: "Install dependencies"
uses: ramsey/composer-install@v3 # https://github.com/marketplace/actions/install-composer-dependencies
- name: "Run mutation tests"
run: "composer infection"