diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 619061f..28a53fb 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -20,30 +20,59 @@ permissions: jobs: quality: runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v6 + - name: Checkout code + uses: actions/checkout@v6 + + # ------------------------- + # Cache Composer + # ------------------------- + - name: Cache Composer dependencies + uses: actions/cache@v4 + with: + path: ~/.composer/cache + key: composer-${{ runner.os }}-${{ hashFiles('**/composer.lock') }} + restore-keys: | + composer-${{ runner.os }}- + + # ------------------------- + # Cache Node + # ------------------------- + - name: Cache Node dependencies + uses: actions/cache@v4 + with: + path: ~/.npm + key: node-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + node-${{ runner.os }}- - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.4' + coverage: none + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: '22' + cache: 'npm' + + # ------------------------- + # Install dependencies + # ------------------------- - name: Install Dependencies run: | - composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist - npm install + composer install --no-interaction --prefer-dist --no-progress --no-scripts + npm ci - - name: Run Pint - run: composer lint - - - name: Format Frontend - run: npm run format - - - name: Lint Frontend - run: npm run lint - - # - name: Commit Changes - # uses: stefanzweifel/git-auto-commit-action@v7 - # with: - # commit_message: fix code style - # commit_options: '--no-verify' + # ------------------------- + # Run linters in parallel + # ------------------------- + - name: Run linters + run: | + composer lint & + npm run format & + npm run lint & + wait diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 696e4d7..5805a25 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -25,32 +25,66 @@ jobs: - name: Checkout code uses: actions/checkout@v6 + # ------------------------- + # Cache Composer + # ------------------------- + - name: Cache Composer dependencies + uses: actions/cache@v4 + with: + path: ~/.composer/cache + key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }} + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}- + + # ------------------------- + # Cache Node + # ------------------------- + - name: Cache Node dependencies + uses: actions/cache@v4 + with: + path: ~/.npm + key: node-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + node-${{ runner.os }}- + - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} tools: composer:v2 - coverage: xdebug + coverage: none - name: Setup Node uses: actions/setup-node@v4 with: node-version: '22' + cache: 'npm' + # ------------------------- + # Install dependencies + # ------------------------- - name: Install Node Dependencies - run: npm i + run: npm ci - - name: Install Dependencies - run: composer install --no-interaction --prefer-dist --optimize-autoloader + - name: Install PHP Dependencies + run: composer install --no-interaction --prefer-dist --optimize-autoloader --no-progress - - name: Copy Environment File - run: cp .env.example .env - - - name: Generate Application Key - run: php artisan key:generate + # ------------------------- + # Laravel setup + # ------------------------- + - name: Prepare environment + run: | + cp .env.example .env + php artisan key:generate + # ------------------------- + # Build (optional – remove if not needed for tests) + # ------------------------- - name: Build Assets run: npm run build - - name: Tests - run: ./vendor/bin/phpunit + # ------------------------- + # Run tests (parallel) + # ------------------------- + - name: Run Tests + run: php artisan test --parallel