name: Release

on:
  push:
    branches:
      - master
jobs:
  tests:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        php: [8.1, 8.2, 8.3, 8.4]

    steps:
    - name: Checkout code
      uses: actions/checkout@v4

    - name: Setup PHP
      uses: shivammathur/setup-php@v2
      with:
        php-version: ${{ matrix.php }}

    - name: Validate composer.json
      run: composer validate

    - name: Install dependencies
      run: composer update --prefer-source

    - name: Run test suite
      run: php vendor/bin/phpunit tests
  release:
    name: Automated release
    needs: [ tests ]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v1
        with:
          node-version: 22
      - run: >
          npx
          -p "@semantic-release/commit-analyzer"
          -p "@semantic-release/release-notes-generator"
          -p conventional-changelog-conventionalcommits
          -p semantic-release
          -- semantic-release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
permissions:
  packages: write
  contents: write
  pull-requests: write