name: Docker Build

on:
    push:
        branches:
            - "main"
        tags:
            - "*"
    workflow_dispatch:

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Install Docker
        run: |-
          install -m 0755 -d /etc/apt/keyrings
          curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
          chmod a+r /etc/apt/keyrings/docker.gpg
          echo \
            "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
            "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" > /etc/apt/sources.list.d/docker.list
          apt-get -qq update
          DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -qq -y docker-ce-cli docker-buildx-plugin docker-compose-plugin

      - name: Docker meta
        id: meta
        uses: actions/docker-metadata-action@v4
        with:
          # list of Docker images to use as base name for tags
          images: git.amogus.cloud/lea/maddy-admin
          # generate Docker tags based on branch and short commit SHA
          tags: |
            type=ref,event=branch
            type=sha

      - name: Set up QEMU
        uses: actions/docker-setup-qemu-action@v2

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

      - name: Login to registry
        uses: actions/docker-login-action@v2
        with:
          registry: git.amogus.cloud
          username: lea
          password: ${{ secrets.FORGEJO_TOKEN }}

      - name: Build and push
        uses: actions/docker-build-push-action@v5
        with:
          context: .
          platforms: linux/amd64,linux/arm64
          push: ${{ github.event_name != 'pull_request' }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}

      - name: Send build completion notification
        run: curl -u "forgejo:${{ secrets.NTFY_PASSWORD }}" -d "Finished building maddy-admin" https://ntfy.lea.pet/forgejo
