ci: Add status jobs (#161) #252
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: "Tests" | |
on: | |
push: | |
branches: | |
- "main" | |
- "master" | |
pull_request: null | |
schedule: | |
- cron: '0 0 1 * *' | |
jobs: | |
unit-tests: | |
runs-on: "ubuntu-latest" | |
name: "Unit Tests on PHP ${{ matrix.php }} and ${{ matrix.tools }}" | |
strategy: | |
fail-fast: false | |
matrix: | |
php: | |
- "7.2" | |
- "7.3" | |
- "7.4" | |
- "8.0" | |
- "8.1" | |
- "8.2" | |
- "8.3" | |
tools: [ "composer" ] | |
dependency-versions: [ "highest" ] | |
include: | |
- php: "7.2" | |
tools: "composer:v2.0" | |
dependency-versions: "lowest" | |
steps: | |
- name: "Check out repository code" | |
uses: "actions/checkout@v3" | |
- name: "Setup PHP" | |
uses: "shivammathur/setup-php@v2" | |
with: | |
php-version: "${{ matrix.php }}" | |
tools: "${{ matrix.tools }}" | |
- name: "Install Composer dependencies" | |
uses: "ramsey/composer-install@v2" | |
with: | |
dependency-versions: "${{ matrix.dependency-versions }}" | |
- name: "Validate composer.json" | |
run: "composer validate --strict --no-check-lock" | |
- name: "Run tests" | |
run: "vendor/bin/phpunit --group default" | |
e2e-tests: | |
runs-on: "ubuntu-latest" | |
name: "E2E Tests on PHP ${{ matrix.php }}" | |
strategy: | |
fail-fast: false | |
matrix: | |
php: | |
- "8.2" | |
- "8.3" | |
steps: | |
- name: "Check out repository code" | |
uses: "actions/checkout@v3" | |
- name: "Setup PHP" | |
uses: "shivammathur/setup-php@v2" | |
with: | |
php-version: "${{ matrix.php }}" | |
tools: "composer" | |
- name: "Correct bin plugin version for e2e scenarios (PR-only)" | |
if: github.event_name == 'pull_request' | |
run: find e2e -maxdepth 1 -mindepth 1 -type d -exec bash -c "cd {} && composer require --dev bamarni/composer-bin-plugin:dev-${GITHUB_SHA} --no-update" \; | |
- name: "Install Composer dependencies" | |
uses: "ramsey/composer-install@v2" | |
with: | |
dependency-versions: "highest" | |
- name: "Run tests" | |
run: "vendor/bin/phpunit --group e2e" | |
# This is a "trick", a meta task which does not change, and we can use in | |
# the protected branch rules as opposed to the E2E tests one above which | |
# may change regularly. | |
# This allows us to mark only this job as required instead of each individual | |
# ever-changing E2E tests. | |
validate-tests: | |
name: "Tests Status" | |
runs-on: "ubuntu-latest" | |
needs: | |
- "unit-tests" | |
- "e2e-tests" | |
if: "always()" | |
steps: | |
- name: "Successful run" | |
if: "${{ !(contains(needs.*.result, 'failure')) }}" | |
run: "exit 0" | |
- name: "Failing run" | |
if: "${{ contains(needs.*.result, 'failure') }}" | |
run: "exit 1" |