Skip to content

auditor 2.x CI

auditor 2.x CI #924

Workflow file for this run

name: auditor 2.x CI
on:
schedule:
- cron: 15 0 * * *
pull_request:
branches:
- 2.x
push:
branches:
- 2.x
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@v3
with:
ref: 2.x
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
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: |
sed -i "s/'phpdoc_to_return_type' => true/'phpdoc_to_return_type' => false/g" .php-cs-fixer.php
composer cs-check
- name: Validate composer
run: composer validate --strict --no-check-lock
tests_sf4_sf5:
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_ALLOW_EMPTY_PASSWORD: yes
MYSQL_DATABASE: auditor
ports:
- 3306:3306
options: >-
--health-cmd="mysqladmin ping"
--health-interval=10s
--health-timeout=5s
--health-retries=3
postgres:
image: postgres
env:
POSTGRES_PASSWORD: password
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
strategy:
matrix:
php:
- '7.4'
- '8.0'
- '8.1'
symfony:
- '4.4.*'
- '5.*'
db:
- 'sqlite'
- 'mysql'
- 'pgsql'
fail-fast: false
steps:
- name: Shutdown Ubuntu MySQL (SUDO)
run: sudo service mysql stop # Shutdown the Default MySQL, "sudo" is necessary, please not remove it
- name: Checkout
uses: actions/checkout@v3
with:
ref: 2.x
- 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@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ matrix.php }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: ${{ matrix.php }}-composer-
- name: Update project dependencies (4.4.*)
if: matrix.symfony == '4.4.*'
run: SYMFONY_REQUIRE="^4.4" composer update --no-progress --ansi --prefer-stable
- name: Update project dependencies (5.*)
if: matrix.symfony == '5.*'
run: SYMFONY_REQUIRE="^5.4" 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
run: tools/phpstan/vendor/bin/phpstan --ansi analyse src --debug
- name: Run tests
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.${{ matrix.db }}.xml --coverage-clover=coverage.xml
- name: Upload coverage file
uses: actions/upload-artifact@v3
with:
name: ${{ env.CODECOV_REPORT }}
path: coverage.xml
tests_sf_6:
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_ALLOW_EMPTY_PASSWORD: yes
MYSQL_DATABASE: auditor
ports:
- 3306:3306
options: >-
--health-cmd="mysqladmin ping"
--health-interval=10s
--health-timeout=5s
--health-retries=3
postgres:
image: postgres
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.0'
- '8.1'
symfony:
- '6.*'
db:
- 'sqlite'
- 'mysql'
- 'pgsql'
fail-fast: false
steps:
- name: Shutdown Ubuntu MySQL (SUDO)
run: sudo service mysql stop # Shutdown the Default MySQL, "sudo" is necessary, please not remove it
- name: Checkout
uses: actions/checkout@v3
with:
ref: 2.x
- 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@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ matrix.php }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: ${{ matrix.php }}-composer-
- name: Update project dependencies (6.*)
if: matrix.symfony == '6.*'
run: SYMFONY_REQUIRE="^6.0" 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
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.${{ matrix.db }}.xml --coverage-clover=coverage.xml
- name: Upload coverage file
uses: actions/upload-artifact@v3
with:
name: ${{ env.CODECOV_REPORT }}
path: coverage.xml
upload_coverage:
name: "Upload coverage to Codecov"
runs-on: "ubuntu-latest"
needs:
- tests_sf4_sf5
- tests_sf_6
steps:
- name: "Checkout"
uses: "actions/checkout@v3"
with:
fetch-depth: 2
- name: "Download coverage files"
uses: "actions/download-artifact@v3"
with:
path: "reports"
- name: "Upload to Codecov"
uses: "codecov/codecov-action@v3"
with:
directory: reports
token: ${{ env.CODECOV_TOKEN }}