diff --git a/.github/workflows/laravel.yml b/.github/workflows/laravel.yml index 407dc3d..e571032 100644 --- a/.github/workflows/laravel.yml +++ b/.github/workflows/laravel.yml @@ -1,35 +1,73 @@ -name: Laravel +name: CI -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] +# You want to run the tests on every push, and for pull requests. +on: [ push, pull_request ] jobs: - laravel-tests: - - runs-on: ubuntu-latest - - steps: - - uses: shivammathur/setup-php@15c43e89cdef867065b0213be354c2841860869e - with: - php-version: '8.0' - - uses: actions/checkout@v3 - - name: Copy .env - run: php -r "file_exists('.env') || copy('.env.example', '.env');" - - name: Install Dependencies - run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist - - name: Generate key - run: php artisan key:generate - - name: Directory Permissions - run: chmod -R 777 storage bootstrap/cache - - name: Create Database - run: | - mkdir -p database - touch database/database.sqlite - - name: Execute tests (Unit and Feature tests) via PHPUnit - env: - DB_CONNECTION: sqlite - DB_DATABASE: database/database.sqlite - run: vendor/bin/phpunit + tests: + runs-on: ubuntu-latest + + strategy: + max-parallel: 2 + matrix: + php-versions: ['8.2'] + + name: PHP ${{ matrix.php-versions }} + + services: + mysql: + image: mysql:8.0 + env: + MYSQL_ALLOW_EMPTY_PASSWORD: yes + MYSQL_DATABASE: testing + ports: + - 3306:3306 + options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 + + # Environment variables during project setup and test run. + env: + DB_CONNECTION: mysql + DB_HOST: 127.0.0.1 + DB_PORT: 3306 + DB_DATABASE: testing + DB_USERNAME: root + DB_PASSWORD: "" + ADMIN_PREFIX: app + IS_LIVE: true + TRIAL_DAYS: 14 + + steps: + - uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@master + with: + php-version: ${{ matrix.php-versions }} + coverage: xdebug + + - name: Validate composer.json and composer.lock + run: composer validate + + - name: Copy .env + run: php -r "file_exists('.env') || copy('.env.example', '.env');" + + - name: Install Dependencies + run: composer update --no-interaction + + - name: Migrate DB + run: php artisan migrate --seed + + - name: Generate key + run: php artisan key:generate + + - name: Set storage link + run: php artisan storage:link + + - name: Directory Permissions + run: chmod -R 777 storage bootstrap/cache + + - name: PINT + run: ./vendor/bin/pint --test + + - name: Run test suite + run: ./vendor/bin/pest --parallel