mirror of
https://github.com/kevinpapst/kimai2.git
synced 2025-01-10 19:47:35 +00:00
125 lines
5 KiB
YAML
125 lines
5 KiB
YAML
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
|