Skip to content

Main

Main #2696

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:/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:/marketplace/actions/setup-php-action
with:
php-version: "8.1"
coverage: none
- name: "Checkout code"
uses: actions/checkout@v4 # https:/marketplace/actions/checkout
- name: "Install dependencies"
uses: ramsey/composer-install@v3 # https:/marketplace/actions/install-composer-dependencies
- name: "Run all static analysis tools"
run: "composer static"
tests:
name: "Test: ${{ matrix.os }} / deps-${{ matrix.dependencies }}"
runs-on: "${{ matrix.os }}"
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, macos-latest, windows-latest ]
php: [ "8.1" ]
dependencies: [ lowest, highest ]
steps:
- name: "Install rsync"
uses: GuillaumeFalourd/[email protected] # https:/marketplace/actions/setup-rsync
- name: "Set up PHP w/ Coverage"
if: ${{ matrix.os == 'ubuntu-latest' && matrix.dependencies == 'highest' }}
uses: shivammathur/setup-php@v2 # https:/marketplace/actions/setup-php-action
with:
php-version: "${{ matrix.php }}"
extensions: gd
ini-values: assert.active=1, assert.exception=1, zend.assertions=1
- name: "Set up PHP w/o Coverage"
if: ${{ !( matrix.os == 'ubuntu-latest' && matrix.dependencies == 'highest' ) }}
uses: shivammathur/setup-php@v2 # https:/marketplace/actions/setup-php-action
with:
php-version: "${{ matrix.php }}"
coverage: none
extensions: gd
ini-values: assert.active=1, assert.exception=1, zend.assertions=1
- name: "Debugging info"
run: |
rsync --version | head -1
php -i
- name: "Checkout code"
uses: actions/checkout@v4 # https:/marketplace/actions/checkout
- name: "Install dependencies"
uses: ramsey/composer-install@v3 # https:/marketplace/actions/install-composer-dependencies
with:
dependency-versions: "${{ matrix.dependencies }}"
- name: "Run core tests with coverage"
run: "composer test"
if: ${{ matrix.os == 'ubuntu-latest' && matrix.dependencies == 'highest' }}
# 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 --exclude-group=windows_only"
if: ${{ runner.os != 'Windows' && !( matrix.os == 'ubuntu-latest' && matrix.dependencies == 'highest' ) }}
- name: "Run Windows tests"
run: "./vendor/bin/phpunit --no-coverage --exclude-group=no_windows"
if: ${{ runner.os == 'Windows' }}
performance:
name: "Performance: ${{ matrix.os }}"
runs-on: "${{ matrix.os }}"
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, windows-latest ]
php: [ "8.1" ]
steps:
- name: "Install rsync"
uses: GuillaumeFalourd/[email protected] # https:/marketplace/actions/setup-rsync
- name: "Set up PHP"
uses: shivammathur/setup-php@v2 # https:/marketplace/actions/setup-php-action
with:
php-version: "8.1"
coverage: none
- name: "Checkout code"
uses: actions/checkout@v4 # https:/marketplace/actions/checkout
- name: "Install dependencies"
uses: ramsey/composer-install@v3 # https:/marketplace/actions/install-composer-dependencies
- name: "Run performance tests"
run: "composer phpbench -- --progress=plain --ansi"
mutation:
name: "Mutation"
runs-on: ubuntu-latest
steps:
- name: "Set up PHP"
uses: shivammathur/setup-php@v2 # https:/marketplace/actions/setup-php-action
with:
php-version: "8.1"
extensions: gd
ini-values: assert.active=1, assert.exception=1, zend.assertions=1
- name: "Checkout code"
uses: actions/checkout@v4 # https:/marketplace/actions/checkout
- name: "Install dependencies"
uses: ramsey/composer-install@v3 # https:/marketplace/actions/install-composer-dependencies
- name: "Run mutation tests"
run: "composer infection"