Try this #16
Workflow file for this run
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: Test requirements check | |
on: | |
# Run on pushes to master and on pull requests which touch files related to the requirements check. | |
# No need to run this workflow when there are only irrelevant changes. | |
push: | |
# branches: | |
# - master | |
# tags: | |
# - '**' | |
paths: | |
# TODO: verify!!! | |
- '.github/workflows/test-requirements-check.yml' | |
- '.github/workflows/reusable-build-phar.yml' | |
- 'bin/phpcs' | |
- 'bin/phpcbf' | |
- 'requirements.php' | |
- 'scripts/**' | |
pull_request: | |
paths: | |
- '.github/workflows/test-requirements-check.yml' | |
- '.github/workflows/reusable-build-phar.yml' | |
- 'bin/phpcs' | |
- 'bin/phpcbf' | |
- 'requirements.php' | |
- 'scripts/**' | |
# Allow manually triggering the workflow. | |
workflow_dispatch: | |
# 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 | |
jobs: | |
# Make sure that the files involved don't contain parse errors on the PHP versions | |
# supported by the requirements check to prevent the tests being run failing on the | |
# parse errors instead of on the requirements check (which would easily go unnoticed). | |
lint: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
php: ['5.3', '5.4', '5.5', '5.6', '7.0', '7.1'] | |
name: "Lint: PHP ${{ matrix.php }}" | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Install PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
coverage: none | |
- name: "Lint bin/phpcs" | |
run: php -l ./bin/phpcs | |
- name: "Lint bin/phpcbf" | |
run: php -l ./bin/phpcbf | |
- name: "Lint requirements.php" | |
run: php -l ./requirements.php | |
prepare-matrix: | |
needs: lint | |
name: Get test matrix | |
runs-on: ubuntu-latest | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.MATRIX }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Install PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: 'latest' | |
ini-values: 'error_reporting=-1, display_errors=On' | |
coverage: none | |
- name: Set matrix | |
id: set-matrix | |
run: echo "MATRIX=$(php scripts/get-requirements-check-matrix.php)" >> "$GITHUB_OUTPUT" | |
test-plain: | |
needs: prepare-matrix | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.prepare-matrix.outputs.matrix) }} | |
name: "Plain: ${{ matrix.cmd == 'phpcs' && 'cs' || 'cbf' }} / ${{ matrix.php }} / ${{ matrix.name }} (${{ matrix.os == 'ubuntu-latest' && 'nix' || 'Win' }})" | |
continue-on-error: ${{ matrix.php == 'nightly' }} | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Install PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
ini-values: 'error_reporting=-1, display_errors=On' | |
extensions: ${{ matrix.extensions }} | |
coverage: none | |
env: | |
fail-fast: true | |
- name: Run the test | |
id: check | |
continue-on-error: true | |
run: php "bin/${{ matrix.cmd }}" ./scripts | |
# TEMPORARY | |
# - name: Check the result of a successful test against expectation | |
# if: ${{ steps.check.outcome == 'success' && expect == 'fail' }} | |
# run: exit 1 | |
# - name: Check the result of a failed test against expectation | |
# if: ${{ steps.check.outcome != 'success' && expect == 'success' }} | |
# run: exit 1 | |
build-phars: | |
needs: lint | |
name: "Build Phar on PHP: 8.0" | |
uses: ./.github/workflows/reusable-build-phar.yml | |
with: | |
uploadArtifacts: true | |
test-phar: | |
needs: [prepare-matrix, build-phars] | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.prepare-matrix.outputs.matrix) }} | |
name: "PHAR: ${{ matrix.cmd == 'phpcs' && 'cs' || 'cbf' }} / ${{ matrix.php }} / ${{ matrix.name }} (${{ matrix.os == 'ubuntu-latest' && 'nix' || 'Win' }})" | |
continue-on-error: ${{ matrix.php == 'nightly' }} | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Install PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
ini-values: 'error_reporting=-1, display_errors=On' | |
extensions: ${{ matrix.extensions }} | |
coverage: none | |
env: | |
fail-fast: true | |
- name: Download the phar | |
uses: actions/download-artifact@v4 | |
with: | |
name: ${{ matrix.cmd }}-phar | |
- name: Run the test | |
id: check | |
continue-on-error: true | |
run: php ${{ matrix.cmd }}.phar ./scripts | |
# TEMPORARY | |
# - name: Check the result of a successful test against expectation | |
# if: ${{ steps.check.outcome == 'success' && expect == 'fail' }} | |
# run: exit 1 | |
# - name: Check the result of a failed test against expectation | |
# if: ${{ steps.check.outcome != 'success' && expect == 'success' }} | |
# run: exit 1 |