name: Release
on:
  push:
    branches:
      - master
jobs:
  audit:
    name: Audit
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set up Node.js runtime
        uses: actions/setup-node@v2
        with:
          node-version: 16.x
      - name: Set up Node.js runtime
        run: npm audit --production
  test:
    name: Test on supported Node.js versions
    runs-on: ubuntu-latest
    needs: audit
    strategy:
      matrix:
        node: [12, 14, 16, 18]
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set up Node.js runtime
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node }}
      - name: Run Test
        run: npm ci && npm test
  release:
    name: Release
    runs-on: ubuntu-latest
    needs: test
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v1
        with:
          node-version: 16
      - name: Install dependencies
        run: npm ci
      - name: Release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
        run: npm run release