name: Docker Compose Build

on:
  push:
    branches:
      - main

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
    steps:
      - uses: actions/checkout@v2
      - name: Get the version
        id: vars
        run: |
            echo ::set-output name=sha::$(echo ${GITHUB_SHA:0:7})
            echo ::set-output name=repo::$(echo ${{ github.repository }})
      - name: Run docker build
        run: make docker-build
        env:
          NPM_AUTH_TOKEN: ${{ secrets.PAT_PACKAGES }}
      - name: Tag docker image
        run: docker tag ${{steps.vars.outputs.repo}} ghcr.io/${{steps.vars.outputs.repo}}:${{steps.vars.outputs.sha}}
      - name: Docker Login
        run: echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u cerc-io --password-stdin
      - name: Docker Push
        run: docker push ghcr.io/${{steps.vars.outputs.repo}}:${{steps.vars.outputs.sha}}