name: Publish Docker image

on:
  release:
    types: [published]
  workflow_dispatch:

env:
  REGISTRY: git.joinsharkey.org

jobs:
  push_to_registry:
    name: Push Docker image to GHCR
    runs-on: docker

    steps:
      - name: install packages
        run: apt-get update && apt-get install -y wget git curl
      - uses: https://code.forgejo.org/actions/setup-node@v3
        with:
          node-version: 20
      - name: Install docker
        run: |
          echo deb http://deb.debian.org/debian bullseye-backports main | tee /etc/apt/sources.list.d/backports.list && apt-get -qq update
          DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -qq -y -t bullseye-backports docker.io
      - name: Check out the repo
        uses: actions/checkout@v4.1.1
      - name: Set up Docker Buildx
        id: buildx
        uses: https://github.com/docker/setup-buildx-action@v3.0.0
        with:
          platforms: linux/amd64,linux/arm64
      - name: Docker meta
        id: meta
        uses: https://github.com/docker/metadata-action@v5
        with:
          images: ${{ env.REGISTRY }}/sharkey/sharkey
          tags: |
            type=edge
            type=ref,event=pr
            type=ref,event=branch
            type=semver,pattern={{version}}
            type=semver,pattern={{major}}.{{minor}}
            type=semver,pattern={{major}}
            type=raw,value=stable
      - name: Log in to GHCR
        uses: https://github.com/docker/login-action@v3
        with:
          registry: ${{ env.REGISTRY }}
          username: Marie
          password: ${{ secrets.TOKEN }}
      - name: Build and Push to GHCR
        id: build
        uses: https://github.com/docker/build-push-action@v5
        with:
          builder: ${{ steps.buildx.outputs.name }}
          context: .
          push: true
          platforms: ${{ steps.buildx.outputs.platforms }}
          provenance: false
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}