name: Release workflow

on:
  push:
    branches:
      - 'main'
      - 'next'
      - '4.x'

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v4
      with:
        node-version: 20
        cache: yarn
    - run: yarn install
    - run: yarn run test
      env:
        CI: true
        NODE_OPTIONS: "--experimental-abortcontroller"

  release:
    runs-on: ubuntu-latest
    needs:
      - test

    environment: npm

    steps:
    - uses: actions/checkout@v4
      with:
        persist-credentials: false
    - name: Use Node.js 20
      uses: actions/setup-node@v4
      with:
        node-version: 20
        cache: yarn
    - run: yarn install
    - run: yarn build
    - run: yarn release
      env:
        NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
        GITHUB_TOKEN: ${{ secrets.GH_ADMIN_TOKEN }}
