Skip to content

auditor 3.x CI

auditor 3.x CI #976

Workflow file for this run

name: auditor 3.x CI
on:
schedule:
- cron: 0 0 * * *
pull_request:
branches:
- master
push:
branches:
- master
jobs:
code_style_composer_checks:
name: Runs PHP-CS-Fixer to check for CS issues, and validates composer.json
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.3
extensions: composer:v2
- name: Install PHP-CS-Fixer
run: composer install --no-progress --ansi --working-dir=tools/php-cs-fixer
- name: Run PHP-CS-Fixer
run: composer cs-check
- name: Validate composer
run: composer validate --strict --no-check-lock
tests_sf:
name: Tests PHP ${{ matrix.php }}, Symfony ${{ matrix.symfony }}, ${{ matrix.db }}
runs-on: ubuntu-latest
needs: [ code_style_composer_checks ]
services:
mysql:
image: mysql:8
env:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: auditor
ports:
- 3306:3306
options: >-
--health-cmd="mysqladmin ping"
--health-interval=10s
--health-timeout=5s
--health-retries=3
postgres:
image: postgres:15
env:
POSTGRES_PASSWORD: password
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
strategy:
matrix:
php:
- '8.2'
- '8.3'
symfony:
- '5.*'
- '6.*'
- '7.*'
db:
- 'sqlite'
- 'mysql'
- 'pgsql'
fail-fast: false
steps:
- name: Configure Database
run: |
if [ "${{ matrix.db }}" = "sqlite" ]; then
echo "DATABASE_URL=sqlite:///:memory:" >> $GITHUB_ENV
elif [ "${{ matrix.db }}" = "mysql" ]; then
echo "DATABASE_URL=mysql://root:[email protected]/auditor?serverVersion=8&charset=utf8mb4" >> $GITHUB_ENV
elif [ "${{ matrix.db }}" = "pgsql" ]; then
echo "DATABASE_URL=pgsql://postgres:password@localhost/auditor?serverVersion=15&charset=utf8" >> $GITHUB_ENV
fi
- name: Shutdown Ubuntu MySQL (SUDO)
run: sudo service mysql stop # Shutdown the Default MySQL, "sudo" is necessary, please do not remove it
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: composer:v2, flex, pcov
coverage: pcov
- name: Configure Symfony
run: |
composer global config --no-plugins allow-plugins.symfony/flex true
composer global require --no-progress --no-scripts --no-plugins symfony/flex
composer config extra.symfony.require "${{ matrix.symfony }}"
- name: Get Composer Cache Directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache dependencies
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ matrix.php }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: ${{ matrix.php }}-composer-
- name: Update project dependencies (5.*)
if: matrix.symfony == '5.*'
env:
SYMFONY_REQUIRE: "^5.4"
run: composer update --no-progress --ansi --prefer-stable
- name: Update project dependencies (6.*)
if: matrix.symfony == '6.*'
env:
SYMFONY_REQUIRE: "^6.0"
run: composer update --no-progress --ansi --prefer-stable
- name: Update project dependencies (7.*)
if: matrix.symfony == '7.*'
env:
SYMFONY_REQUIRE: "^7.0"
run: composer update --no-progress --ansi --prefer-stable
- name: Install PHPStan
run: composer install --no-progress --ansi --working-dir=tools/phpstan
- name: Run PHPStan
run: composer phpstan
- name: Run tests
env:
XDEBUG_MODE: coverage
DATABASE_URL: ${{ env.DATABASE_URL }}
run: |
RAW_CODECOV_REPORT="php-${{ matrix.php }}-sf-${{ matrix.symfony }}-${{ matrix.db }}-coverage"
echo "CODECOV_REPORT=$(echo $RAW_CODECOV_REPORT | sed 's/\.\*//')" >> $GITHUB_ENV
vendor/bin/phpunit -c phpunit.xml --coverage-clover=coverage.xml
- name: Upload coverage file
uses: actions/upload-artifact@v4
with:
name: ${{ env.CODECOV_REPORT }}
path: coverage.xml
upload_coverage:
name: "Upload coverage to Codecov"
runs-on: "ubuntu-latest"
needs:
- tests_sf
steps:
- name: "Checkout"
uses: "actions/checkout@v4"
with:
fetch-depth: 2
- name: "Download coverage files"
uses: "actions/[email protected]"
with:
path: "reports"
- name: "Upload to Codecov"
uses: "codecov/codecov-action@v4"
with:
directory: reports
token: ${{ env.CODECOV_TOKEN }}