name: Automated release
on:
  push:
    branches:
      - master
jobs:
  tests:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php: [ 8.2, 8.3, 8.4, 8.5 ]
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          tools: phpstan
      - name: Validate composer.json and composer.lock
        run: composer validate
      - name: Install dependencies
        run: composer install --prefer-dist --no-progress --no-interaction --no-suggest
      - name: Run PHPStan
        run: phpstan
  release:
    name: Automated release
    needs:
      - tests
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
          persist-credentials: false
      - uses: actions/setup-node@v4
        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