name: Check # Run this workflow every time a new commit pushed to your repository on: push: paths-ignore: - '.github/**/*' - '**/*.md' - 'public/build/*.js' - 'public/build/**/*.js' - 'docker/**/*' - 'resources/scripts/**/*' tags-ignore: - "*" branches-ignore: - 'translations' pull_request: paths-ignore: - '**/*.md' - 'public/build/*.js' - 'public/build/**/*.js' branches-ignore: - 'translations' # Allow manually triggering the workflow. workflow_dispatch: jobs: kill_previous: name: 0️⃣ Kill previous runs runs-on: ubuntu-latest # We want to run on external PRs, but not on our own internal PRs as they'll be run by the push to the branch. if: (github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository) steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@0.12.1 with: access_token: ${{ github.token }} php_syntax_errors: name: 1️⃣ PHP Code Style errors runs-on: ubuntu-latest needs: - kill_previous steps: - name: Set up PHP uses: shivammathur/setup-php@v2 with: php-version: 8.3 - name: Checkout code uses: actions/checkout@v4 - name: Install dependencies uses: ramsey/composer-install@v2 - name: Check source code for syntax errors run: ./vendor/bin/pint --test tests: name: 2️⃣ PHP ${{ matrix.php-version }} Tests needs: - php_syntax_errors runs-on: ubuntu-latest strategy: matrix: php-version: - 8.3 - 8.4 env: extensions: bcmath, curl, dom, gd, imagick, json, libxml, mbstring, pcntl, pdo, pdo_mysql, zip steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup PHP Action uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} extensions: ${{ env.extensions }} coverage: xdebug tools: pecl, composer - name: Install Composer dependencies uses: ramsey/composer-install@v2 - name: Use Node.js 20 uses: actions/setup-node@v4 with: node-version: 20 - name: Install run: npm install - name: Compile Front-end run: npm run build - name: Apply tests ${{ matrix.php-version }} run: php artisan test