name: Build and Push Docker Image

on:
  release:
    types: [published]

jobs:
  client:
    name: Client
    runs-on: ubuntu-latest

    steps:
      - name: Checkout the repository
        uses: actions/checkout@v3.0.0

      - id: version
        name: Get Version
        run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1.2.0

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1.6.0

      - name: Login to Docker
        uses: docker/login-action@v1.14.1
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

      - name: Login to GitHub Container Registry
        uses: docker/login-action@v1.14.1
        with:
          registry: ghcr.io
          username: $GITHUB_REPOSITORY_OWNER
          password: ${{ secrets.GH_TOKEN }}

      - name: Build and Push Client Image
        uses: docker/build-push-action@v2.10.0
        with:
          context: .
          push: true
          file: client/Dockerfile
          platforms: linux/amd64,linux/arm64
          tags: |
            amruthpillai/reactive-resume:client-latest
            amruthpillai/reactive-resume:client-${{ steps.version.outputs.tag }}
            ghcr.io/amruthpillai/reactive-resume:client-latest
            ghcr.io/amruthpillai/reactive-resume:client-${{ steps.version.outputs.tag }}

  server:
    name: Server
    runs-on: ubuntu-latest

    steps:
      - name: Checkout the repository
        uses: actions/checkout@v3.0.0

      - id: version
        name: Get Version
        run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1.2.0

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1.6.0

      - name: Login to Docker
        uses: docker/login-action@v1.14.1
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

      - name: Login to GitHub Container Registry
        uses: docker/login-action@v1.14.1
        with:
          registry: ghcr.io
          username: $GITHUB_REPOSITORY_OWNER
          password: ${{ secrets.GH_TOKEN }}

      - name: Build and Push Server Image
        uses: docker/build-push-action@v2.10.0
        with:
          context: .
          push: true
          file: server/Dockerfile
          platforms: linux/amd64,linux/arm64
          tags: |
            amruthpillai/reactive-resume:server-latest
            amruthpillai/reactive-resume:server-${{ steps.version.outputs.tag }}
            ghcr.io/amruthpillai/reactive-resume:server-latest
            ghcr.io/amruthpillai/reactive-resume:server-${{ steps.version.outputs.tag }}
