name: Docker Build and Push (Development)

on:
    push:
        branches:
            - master

jobs:
    build-and-push-dev:
        runs-on: ubuntu-latest
        permissions:
            contents: write
            packages: write
            security-events: write

        steps:
            - name: Checkout code
              uses: actions/checkout@v4

            - name: Docker Setup QEMU
              uses: docker/setup-qemu-action@v3
              id: qemu
              with:
                  platforms: amd64,arm64

            - name: Set up Docker Buildx
              uses: docker/setup-buildx-action@v3

            - name: Log into ghcr.io registry
              uses: docker/login-action@v3
              with:
                  registry: ghcr.io
                  username: ${{ github.repository_owner }}
                  password: ${{ secrets.GITHUB_TOKEN }}

            - name: Log in to Docker Hub
              uses: docker/login-action@v3
              with:
                  username: ${{ secrets.DOCKER_HUB_USERNAME }}
                  password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

            - name: Build Docker Metadata
              id: docker-metadata
              uses: docker/metadata-action@v5
              with:
                  images: |
                      ghcr.io/subnub/mydrive
                      docker.io/kylehoell/mydrive
                  flavor: |
                      latest=auto
                  tags: |
                      type=ref,event=branch
                      type=sha,commit=${{ github.sha }}
                      type=raw,value=dev,enable={{is_default_branch}}

            - name: Push Service Image to repo
              uses: docker/build-push-action@v5
              with:
                  context: .
                  file: ./Dockerfile
                  push: true
                  provenance: mode=max
                  tags: ${{ steps.docker-metadata.outputs.tags }}
                  labels: ${{ steps.docker-metadata.outputs.labels }}
                  platforms: linux/amd64,linux/arm64
                  cache-from: type=gha,scope=${{ github.workflow }}
                  cache-to: type=gha,mode=max,scope=${{ github.workflow }}
