123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- # GitHub Actions Documentation: https://docs.github.com/en/actions
- name: "build"
- on:
- push:
- branches:
- - "*.x"
- tags:
- - "*"
- pull_request:
- branches:
- - "*.x"
- # Cancels all previous workflow runs for the same branch that have not yet completed.
- concurrency:
- # The concurrency group contains the workflow name and the branch name.
- group: ${{ github.workflow }}-${{ github.ref }}
- cancel-in-progress: true
- env:
- COMPOSER_ROOT_VERSION: "1.99.99"
- jobs:
- coding-standards:
- name: "Coding standards"
- runs-on: "ubuntu-latest"
- steps:
- - name: "Checkout repository"
- uses: "actions/checkout@v4"
- - name: "Install PHP"
- uses: "shivammathur/setup-php@v2"
- with:
- php-version: "latest"
- coverage: "none"
- - name: "Install dependencies (Composer)"
- uses: "ramsey/composer-install@v2"
- - name: "Check syntax (php-parallel-lint)"
- run: "composer lint -- --colors"
- - name: "Check coding standards (PHP_CodeSniffer)"
- run: "./vendor/bin/phpcs --colors"
- static-analysis:
- name: "Static analysis"
- runs-on: "ubuntu-latest"
- steps:
- - name: "Checkout repository"
- uses: "actions/checkout@v4"
- - name: "Install PHP"
- uses: "shivammathur/setup-php@v2"
- with:
- php-version: "latest"
- coverage: "none"
- - name: "Install dependencies (Composer)"
- uses: "ramsey/composer-install@v2"
- - name: "Statically analyze code (PHPStan)"
- run: "composer phpstan -- --ansi"
- - name: "Statically analyze code (Psalm)"
- run: "composer psalm -- --shepherd"
- benchmark:
- name: "Benchmark"
- needs: ["coding-standards", "static-analysis"]
- runs-on: "ubuntu-latest"
- strategy:
- fail-fast: false
- matrix:
- php-version:
- - "8.0"
- - "8.1"
- - "8.2"
- - "8.3"
- steps:
- - name: "Checkout repository"
- uses: "actions/checkout@v4"
- - name: "Install dependencies (apt)"
- run: |
- sudo apt-get update
- sudo apt-get -y install libsodium-dev uuid-dev
- - name: "Install PHP"
- uses: "shivammathur/setup-php@v2"
- with:
- php-version: "${{ matrix.php-version }}"
- extensions: bcmath, gmp, sodium, uuid
- coverage: "none"
- ini-values: "memory_limit=-1"
- - name: "Install dependencies (Composer)"
- uses: "ramsey/composer-install@v2"
- - name: "Run PHPBench"
- run: "composer phpbench -- --ansi"
- code-coverage:
- name: "Code coverage"
- needs: ["coding-standards", "static-analysis"]
- runs-on: "ubuntu-latest"
- steps:
- - name: "Checkout repository"
- uses: "actions/checkout@v4"
- - name: "Install dependencies (apt)"
- run: |
- sudo apt-get update
- sudo apt-get -y install libsodium-dev uuid-dev
- - name: "Install PHP"
- uses: "shivammathur/setup-php@v2"
- with:
- php-version: "latest"
- extensions: bcmath, gmp, sodium, uuid
- coverage: "pcov"
- ini-values: "memory_limit=-1"
- - name: "Install dependencies (Composer)"
- uses: "ramsey/composer-install@v2"
- with:
- dependency-versions: "${{ matrix.dependencies }}"
- - name: "Run unit tests (PHPUnit)"
- run: "./vendor/bin/phpunit --verbose --colors=always --coverage-text --coverage-clover build/logs/clover.xml"
- - name: "Publish coverage report to Codecov"
- uses: "codecov/codecov-action@v3.1.4"
- unit-tests:
- name: "Unit Tests"
- needs: ["code-coverage"]
- runs-on: ${{ matrix.operating-system }}
- strategy:
- fail-fast: false
- matrix:
- php-version:
- - "8.0"
- - "8.1"
- - "8.2"
- - "8.3"
- operating-system:
- - "ubuntu-latest"
- - "windows-latest"
- steps:
- - name: "Configure Git (for Windows)"
- if: ${{ matrix.operating-system == 'windows-latest' }}
- run: |
- git config --system core.autocrlf false
- git config --system core.eol lf
- - name: "Checkout repository"
- uses: "actions/checkout@v4"
- - name: "Install dependencies (apt)"
- if: ${{ matrix.operating-system == 'ubuntu-latest' }}
- run: |
- sudo apt-get update
- sudo apt-get -y install libsodium-dev uuid-dev
- - name: "Install PHP"
- uses: "shivammathur/setup-php@v2"
- with:
- php-version: "${{ matrix.php-version }}"
- extensions: bcmath, gmp, sodium, uuid
- coverage: "none"
- ini-values: "memory_limit=-1"
- - name: "Install dependencies (Composer)"
- uses: "ramsey/composer-install@v2"
- with:
- composer-options: "${{ matrix.composer-options }}"
- - name: "Run unit tests (PHPUnit)"
- run: "./vendor/bin/phpunit --verbose --colors=always --no-coverage"
|