Query hints & persistent cache for latest approvals (#5176) #5587
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: | |
pull_request: null | |
push: | |
branches: | |
- main | |
jobs: | |
integration: | |
runs-on: ubuntu-latest | |
services: | |
mysql: | |
image: mysql:latest | |
env: | |
MYSQL_ALLOW_EMPTY_PASSWORD: false | |
MYSQL_ROOT_PASSWORD: kimai | |
MYSQL_DATABASE: kimai | |
ports: | |
- 3306/tcp | |
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 | |
strategy: | |
matrix: | |
php: ['8.1', '8.2', '8.3', '8.4'] | |
name: Integration (${{ matrix.php }}) | |
steps: | |
- name: Clone Kimai | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
coverage: pcov | |
extensions: ctype, gd, iconv, intl, ldap, mbstring, mysql, xml, zip | |
tools: cs2pr, symfony-cli | |
env: | |
fail-fast: true | |
- name: Determine software versions | |
run: mysql --version && php --version | |
- name: Determine composer cache directory | |
id: composer-cache | |
run: echo "composer_cache_directory=$(composer config cache-dir)" >> $GITHUB_ENV | |
- name: Cache Composer dependencies | |
uses: actions/cache@v4 | |
with: | |
path: "${{ env.composer_cache_directory }}" | |
key: ${{ runner.os }}-${{ matrix.php }}-${{ hashFiles('**/composer.lock') }} | |
- name: Install dependencies | |
run: composer install | |
- name: Validate Composer | |
run: composer validate --strict --no-check-all | |
- name: Warmup cache | |
run: APP_ENV=dev bin/console kimai:reload -n | |
- name: Check codestyles | |
run: PHP_CS_FIXER_IGNORE_ENV=1 vendor/bin/php-cs-fixer fix --dry-run --verbose --config=.php-cs-fixer.dist.php --using-cache=no --show-progress=none --format=checkstyle | cs2pr | |
- name: Run PHPStan for application | |
run: vendor/bin/phpstan analyse -c phpstan.neon --no-progress --error-format=checkstyle | cs2pr | |
- name: Run PHPStan for tests | |
run: vendor/bin/phpstan analyse -c tests/phpstan.neon --no-progress --error-format=checkstyle | cs2pr | |
- name: Lint codebase | |
run: composer linting | |
- name: Install LDAP package (for tests) | |
run: composer require laminas/laminas-ldap | |
- name: Setup problem matchers (for PHPUnit) | |
run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" | |
- name: Run quick unit-tests | |
run: composer tests-unit | |
env: | |
DATABASE_URL: mysql://root:kimai@127.0.0.1:${{ job.services.mysql.ports['3306'] }}/kimai?charset=utf8mb4&serverVersion=8.0.35 | |
APP_ENV: test | |
MAILER_URL: null://localhost | |
- name: Full test-suite | |
if: matrix.php != '8.2' | |
run: vendor/bin/phpunit tests/ | |
env: | |
DATABASE_URL: mysql://root:kimai@127.0.0.1:${{ job.services.mysql.ports['3306'] }}/kimai?charset=utf8mb4&serverVersion=8.0.35 | |
APP_ENV: test | |
MAILER_URL: null://localhost | |
- name: Full test-suite with coverage | |
if: matrix.php == '8.2' | |
run: vendor/bin/phpunit tests/ --coverage-clover=coverage.xml | |
env: | |
DATABASE_URL: mysql://root:kimai@127.0.0.1:${{ job.services.mysql.ports['3306'] }}/kimai?charset=utf8mb4&serverVersion=8.0.35 | |
APP_ENV: dev | |
MAILER_URL: null://localhost | |
- name: Upload code coverage | |
if: matrix.php == '8.2' | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
files: ./coverage.xml | |
fail_ci_if_error: true | |
- name: Run migrations on MySQL | |
run: | | |
bin/console doctrine:database:drop --if-exists --force -n | |
bin/console doctrine:database:create --if-not-exists -n | |
bin/console doctrine:migrations:migrate -n | |
bin/console doctrine:migrations:migrate first -n | |
env: | |
DATABASE_URL: mysql://root:kimai@127.0.0.1:${{ job.services.mysql.ports['3306'] }}/kimai?charset=utf8mb4&serverVersion=8.0.35 | |
APP_ENV: dev | |
MAILER_URL: null://localhost | |
- name: Check for security issues in packages | |
run: symfony security:check |