name: Build and test
on: push

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      # https://github.com/actions/cache/blob/master/examples.md#node---yarn
      - name: "Cache: Get yarn cache directory path"
        id: yarn-cache-dir-path
        run: echo "::set-output name=dir::$(yarn cache dir)"

      - name: "Cache: Set up yarn cache"
        uses: actions/cache@v2
        id: yarn-cache
        with:
          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
          key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-yarn-

      # https://github.com/actions/cache/blob/master/examples.md#ruby---bundler
      - name: "Cache: Set up bundler cache"
        uses: actions/cache@v2
        with:
          path: vendor/bundle
          key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
          restore-keys: |
            ${{ runner.os }}-gems-

      - name: Use Node.js
        uses: actions/setup-node@v1
        with: { node-version: '12.x' }

      - name: Use Ruby
        uses: actions/setup-ruby@v1
        with: { ruby-version: '2.7.1' }

      - name: Setup dependencies
        run: |
          yarn --frozen-lockfile
          bundle config path vendor/bundle
          bundle install --jobs 4 --retry 3

      - run: yarn build
      - run: yarn test
      - run: yarn test:smoke
