name: Deploy Budibase Single Container Image to DockerHub

on:
  workflow_dispatch:

env:
  BASE_BRANCH: ${{ github.event.pull_request.base.ref}}
  BRANCH: ${{ github.event.pull_request.head.ref }}
  CI: true
  PERSONAL_ACCESS_TOKEN : ${{ secrets.PERSONAL_ACCESS_TOKEN }}
  REGISTRY_URL: registry.hub.docker.com
jobs:
  build:
    name: "build"
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [14.x]
    steps:
      - name: "Checkout"
        uses: actions/checkout@v2
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node-version }}
      - name: Setup QEMU
        uses: docker/setup-qemu-action@v1
      - name: Setup Docker Buildx
        id: buildx
        uses: docker/setup-buildx-action@v1
      - name: Install Pro
        run: yarn install:pro $BRANCH $BASE_BRANCH
      - name: Run Yarn
        run: yarn
      - name: Run Yarn Bootstrap
        run: yarn bootstrap
      - name: Runt Yarn Lint
        run: yarn lint
      - name: Run Yarn Build
        run: yarn build:docker:pre
      - name: Login to Docker Hub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_API_KEY }}
      - name: Get the latest release version
        id: version
        run: |
          release_version=$(cat lerna.json | jq -r '.version')
          echo $release_version
          echo "RELEASE_VERSION=$release_version" >> $GITHUB_ENV
      - name: Tag and release Budibase service docker image
        uses: docker/build-push-action@v2
        with:
          context: .
          push: true
          platforms: linux/amd64,linux/arm64
          tags: budibase/budibase,budibase/budibase:v${{ env.RELEASE_VERSION }}
          file: ./hosting/single/Dockerfile
      - name: Tag and release Budibase Azure App Service docker image
        uses: docker/build-push-action@v2
        with:
          context: .
          push: true
          platforms: linux/amd64
          build-args: TARGETBUILD=aas
          tags: budibase/budibase-aas,budibase/budibase-aas:v${{ env.RELEASE_VERSION }}
          file: ./hosting/single/Dockerfile
