Skip to content

tests

tests #74

Workflow file for this run

name: Tests
on: [push]
jobs:
test:
name: PHP ${{ matrix.php-version }}
runs-on: ubuntu-latest
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
php-version:
- '8.2'
services:
mysql:
image: mysql:8.0
env:
MYSQL_DATABASE: tests
MYSQL_ALLOW_EMPTY_PASSWORD: true
ports:
- 3306
options: >-
--health-cmd "mysqladmin ping"
--health-interval 10s
--health-timeout 5s
--health-retries 3
redis:
image: redis:7.4
ports:
- 6379
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
extensions: mbstring, intl, gd
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup cache environment
id: extcache
uses: shivammathur/cache-extensions@v1
with:
php-version: ${{ matrix.php-version }}
extensions: ${{ env.extensions }}
key: php-extensions-cache
- name: Cache extensions
uses: actions/cache@v4
with:
path: ${{ steps.extcache.outputs.dir }}
key: ${{ steps.extcache.outputs.key }}
restore-keys: ${{ steps.extcache.outputs.key }}
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
extensions: ${{ env.extensions }}
coverage: pcov
tools: composer:v2
- name: Get composer cache directory
id: composercache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache composer dependencies
uses: actions/cache@v4
with:
path: ${{ steps.composercache.outputs.dir }}
key: dependencies-composer-${{ hashFiles('composer.lock') }}-php-${{ matrix.php-version }}
restore-keys: dependencies-composer-
- name: Install composer dependencies
run: composer install --prefer-dist --no-interaction
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'npm'
- name: Install Node dependencies
run: npm ci --no-audit --ignore-scripts
- name: Build assets
run: npm run build
- name: Setup env
run: |
cp .env.ci .env
php artisan key:generate --ansi
- name: Run tests
run: php artisan test
env:
DB_HOST: mysql
DB_PORT: ${{ job.services.mysql.ports[3306] }}
REDIS_HOST: redis
REDIS_PORT: ${{ job.services.redis.ports[6379] }}
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
with:
name: php-${{ matrix.php-version }}-logs
path: storage/logs/laravel.log