name: Docker Build

on: [pull_request]

jobs:
  lint:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [16.x]
    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
          registry-url: 'https://npm.pkg.github.com'
      - run: yarn
        # https://github.com/actions/setup-node/blob/main/docs/advanced-usage.md#use-private-packages
        env:
          # GITHUB_TOKEN can't access packages from other private repositories.
          # https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry#authenticating-to-github-packages
          NODE_AUTH_TOKEN: ${{ secrets.PAT_PACKAGES }}
      - name: Linter check
        run: yarn lint
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [16.x]
    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
          registry-url: 'https://npm.pkg.github.com'
      - run: yarn
        env:
          NODE_AUTH_TOKEN: ${{ secrets.PAT_PACKAGES }}
      - name: Run tests
        env:
          NODE_AUTH_TOKEN: ${{ secrets.PAT_PACKAGES }}
        run: |
          yarn build
          yarn test:init
          yarn test
  build:
    name: Run docker build
    runs-on: ubuntu-latest
    needs: test
    steps:
      - uses: actions/checkout@v2
      - name: Run docker build
        run: make docker-build
        env:
          NPM_AUTH_TOKEN: ${{ secrets.PAT_PACKAGES }}
