name: CI
on:
  - push
  - pull_request
jobs:
  build:
    concurrency:
      group: ${{ github.ref }}
      cancel-in-progress: true
    name: 'Test on Node ${{ matrix.node }} and ${{ matrix.os }}'
    runs-on: '${{ matrix.os }}'
    strategy:
      # max-parallel: 1
      matrix:
        node:
          - 16
        os:
          - ubuntu-latest
          # - windows-latest
    steps:
      - name: 'Checkout repository'
        uses: actions/checkout@v2
      - name: 'Setup Node ${{ matrix.node }}'
        uses: actions/setup-node@v2
        with:
          node-version: '${{ matrix.node }}'
      - name: 'Install depependencies'
        run: npm install
      - name: 'Test'
        run: |
          npm run regen
          npm run test
          npm run build
      - name: 'Compatibilty Check'
        run: |
          npm run compatibilty_check
  release:
    name: 'Release'
    runs-on: ubuntu-latest
    needs: build
    if: github.event_name == 'push' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/next')
    steps:
      - name: 'Checkout repository'
        uses: actions/checkout@v2
      - name: 'Setup Node'
        uses: actions/setup-node@v2
        with:
          node-version: 16
      - name: 'Install depependencies'
        run: npm install
      - name: 'Build'
        run: npm run build
      - name: 'Release'
        run: |
          npx semantic-release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
