244 lines
7.0 KiB
YAML
244 lines
7.0 KiB
YAML
# https://docs.github.com/en/actions
|
|
|
|
on:
|
|
- pull_request
|
|
- push
|
|
|
|
name: CI
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
COMPOSER_ROOT_VERSION: 8.2.x-dev
|
|
PHP_VERSION: 8.4
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
coding-guidelines:
|
|
name: Coding Guidelines
|
|
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 5
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
fetch-depth: 1
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
persist-credentials: false
|
|
|
|
- name: Use local branch
|
|
shell: bash
|
|
env:
|
|
EVENT_NAME: ${{ github.event_name }}
|
|
HEAD_REF: ${{ github.head_ref }}
|
|
REF_NAME: ${{ github.ref_name }}
|
|
run: |
|
|
if [ "$EVENT_NAME" = "pull_request" ]; then
|
|
BRANCH="$HEAD_REF"
|
|
else
|
|
BRANCH="$REF_NAME"
|
|
fi
|
|
git branch -D "$BRANCH" 2>/dev/null || true
|
|
git branch "$BRANCH" HEAD
|
|
git checkout "$BRANCH"
|
|
|
|
- name: Install PHP
|
|
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # 2.37.2
|
|
with:
|
|
php-version: ${{ env.PHP_VERSION }}
|
|
coverage: none
|
|
tools: none
|
|
|
|
- name: Run PHP-CS-Fixer
|
|
run: ./tools/php-cs-fixer fix --dry-run --show-progress=dots --using-cache=no --verbose
|
|
|
|
static-analysis:
|
|
name: Static Analysis
|
|
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 5
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
fetch-depth: 1
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
persist-credentials: false
|
|
|
|
- name: Use local branch
|
|
shell: bash
|
|
env:
|
|
EVENT_NAME: ${{ github.event_name }}
|
|
HEAD_REF: ${{ github.head_ref }}
|
|
REF_NAME: ${{ github.ref_name }}
|
|
run: |
|
|
if [ "$EVENT_NAME" = "pull_request" ]; then
|
|
BRANCH="$HEAD_REF"
|
|
else
|
|
BRANCH="$REF_NAME"
|
|
fi
|
|
git branch -D "$BRANCH" 2>/dev/null || true
|
|
git branch "$BRANCH" HEAD
|
|
git checkout "$BRANCH"
|
|
|
|
- name: Install PHP
|
|
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # 2.37.2
|
|
with:
|
|
php-version: ${{ env.PHP_VERSION }}
|
|
coverage: none
|
|
tools: none
|
|
|
|
- name: Install dependencies with Composer
|
|
run: ./tools/composer update --no-interaction --no-ansi --no-progress
|
|
|
|
- name: Run PHPStan
|
|
run: ./tools/phpstan analyse --no-progress --error-format=github
|
|
|
|
tests:
|
|
name: Tests
|
|
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 5
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
php-version:
|
|
- 8.4
|
|
- 8.5
|
|
- 8.6
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
fetch-depth: 1
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
persist-credentials: false
|
|
|
|
- name: Use local branch
|
|
shell: bash
|
|
env:
|
|
EVENT_NAME: ${{ github.event_name }}
|
|
HEAD_REF: ${{ github.head_ref }}
|
|
REF_NAME: ${{ github.ref_name }}
|
|
run: |
|
|
if [ "$EVENT_NAME" = "pull_request" ]; then
|
|
BRANCH="$HEAD_REF"
|
|
else
|
|
BRANCH="$REF_NAME"
|
|
fi
|
|
git branch -D "$BRANCH" 2>/dev/null || true
|
|
git branch "$BRANCH" HEAD
|
|
git checkout "$BRANCH"
|
|
|
|
- name: Install PHP with extensions
|
|
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # 2.37.2
|
|
with:
|
|
php-version: ${{ matrix.php-version }}
|
|
coverage: none
|
|
tools: none
|
|
|
|
- name: Get Composer cache directory
|
|
id: composer-cache
|
|
shell: bash
|
|
run: |
|
|
echo "dir=$(composer config cache-files-dir)" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Cache Composer cache directory
|
|
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
|
with:
|
|
path: ${{ steps.composer-cache.outputs.dir }}
|
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
|
restore-keys: ${{ runner.os }}-composer-
|
|
|
|
- name: Install dependencies with Composer
|
|
run: ./tools/composer update --no-ansi --no-interaction --no-progress
|
|
|
|
- name: Run tests with PHPUnit
|
|
run: vendor/bin/phpunit
|
|
|
|
code-coverage:
|
|
name: Code Coverage
|
|
|
|
needs:
|
|
- tests
|
|
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 5
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
fetch-depth: 1
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
persist-credentials: false
|
|
|
|
- name: Use local branch
|
|
shell: bash
|
|
env:
|
|
EVENT_NAME: ${{ github.event_name }}
|
|
HEAD_REF: ${{ github.head_ref }}
|
|
REF_NAME: ${{ github.ref_name }}
|
|
run: |
|
|
if [ "$EVENT_NAME" = "pull_request" ]; then
|
|
BRANCH="$HEAD_REF"
|
|
else
|
|
BRANCH="$REF_NAME"
|
|
fi
|
|
git branch -D "$BRANCH" 2>/dev/null || true
|
|
git branch "$BRANCH" HEAD
|
|
git checkout "$BRANCH"
|
|
|
|
- name: Install PHP with extensions
|
|
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # 2.37.2
|
|
with:
|
|
php-version: ${{ matrix.php-version }}
|
|
coverage: xdebug
|
|
tools: none
|
|
|
|
- name: Get Composer cache directory
|
|
id: composer-cache
|
|
shell: bash
|
|
run: |
|
|
echo "dir=$(composer config cache-files-dir)" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Cache Composer cache directory
|
|
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
|
with:
|
|
path: ${{ steps.composer-cache.outputs.dir }}
|
|
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
|
restore-keys: ${{ runner.os }}-composer-
|
|
|
|
- name: Install dependencies with Composer
|
|
run: ./tools/composer update --no-ansi --no-interaction --no-progress
|
|
|
|
- name: Collect code coverage with PHPUnit
|
|
run: vendor/bin/phpunit --log-junit test-results.xml --coverage-openclover=code-coverage.xml
|
|
|
|
- name: Upload test results to Codecov.io
|
|
if: ${{ !cancelled() }}
|
|
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
|
|
with:
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
report_type: test_results
|
|
disable_search: true
|
|
files: ./test-results.xml
|
|
|
|
- name: Upload code coverage data to Codecov.io
|
|
if: ${{ !cancelled() }}
|
|
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
|
|
with:
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
report_type: coverage
|
|
disable_search: true
|
|
files: ./code-coverage.xml
|