name: JS-CI

on: [push, pull_request]

jobs:
  CI:
    name: JS-CI
    runs-on: ubuntu-latest
    timeout-minutes: 20
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Read .nvmrc
        run: echo ::set-output name=NVMRC::$(cat .nvmrc)
        id: nvm

      - name: Setup Node.js
        uses: actions/setup-node@master
        with:
          node-version: '${{ steps.nvm.outputs.NVMRC }}'

      - name: Check for cached node_modules
        uses: actions/cache@v2
        id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
        with:
          path: |
            node_modules
            */*/node_modules
          key: ${{ runner.os }}-${{ hashFiles('**/yarn.lock') }}

      - name: Install dependencies
        if: steps.cache-deps.outputs.cache-hit != 'true'
        run: yarn install --nonInteractive --frozen-lockfile

      - name: Lint
        run: yarn run lint:ci

      - name: Build
        run: yarn build

      - name: Test
        run: yarn test:ci
