name: Build and Test

on:
  push:
    branches:
      - master
  pull_request:
  workflow_dispatch:

concurrency:
  cancel-in-progress: true
  group: ${{ github.workflow }}-${{ github.ref }}

permissions:
  contents: read

jobs:
  php:
    name: Build PHP part
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        php:
          - "7.4"
          - "8.0"
          - "8.1"
          - "8.2"
          - "8.3"
        dependencies:
          - lowest
          - locked
    steps:
      - name: Checkout source code
        uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7

      - name: Set up PHP
        uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # 2.31.1
        with:
          php-version: ${{ matrix.php }}

      - name: Install Composer Dependencies
        uses: ramsey/composer-install@57532f8be5bda426838819c5ee9afb8af389d51a # 3.0.0
        with:
          dependency-versions: ${{ matrix.dependencies }}

  js:
    name: Build JS part
    runs-on: ubuntu-latest
    env:
      NPM_CONFIG_FUND: "0"
      NPM_CONFIG_AUDIT: "0"
      SUPPRESS_SUPPORT: "1"
      NO_UPDATE_NOTIFIER: "true"
    steps:
      - name: Checkout source code
        uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7

      - name: Set up Node.js environment
        uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
        with:
          node-version: lts/*
          cache: npm

      - name: Install dependencies
        run: npm ci

      - name: Build
        run: npm run build