name: Image bauen und in die Registry pushen

on:
  push:
    branches:
      - main
  workflow_dispatch:

env:
  REGISTRY: gitea.mindboost.team
  IMAGE: gitea.mindboost.team/rorapp/robbis.space

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Repository auschecken
        uses: actions/checkout@v4
        with:
          # themes/gokarna ist ein Submodule und wird fuer den Hugo-Build
          # zwingend gebraucht. Ohne dies bricht das Dockerfile ab.
          submodules: recursive
          fetch-depth: 0

      # Der Runner fuehrt Jobs in node:20-bookworm aus. Dort gibt es kein
      # Docker. Dieser Schritt schlaegt nicht fehl, sondern protokolliert nur,
      # was vorhanden ist - damit im Log sichtbar wird, woran es liegt, falls
      # der Build danach scheitert.
      - name: Umgebung protokollieren
        run: |
          grep PRETTY_NAME /etc/os-release || true
          printf 'docker-CLI:    '; command -v docker || echo 'fehlt'
          printf 'Docker-Socket: '; test -S /var/run/docker.sock && echo 'vorhanden' || echo 'fehlt'
          printf 'DOCKER_HOST:   %s\n' "${DOCKER_HOST:-nicht gesetzt}"

      # Nur die CLI (rund 30 MB), kein Daemon. Gebaut wird ueber den vom
      # Runner durchgereichten Socket.
      - name: Docker-CLI nachruesten
        run: |
          if ! command -v docker >/dev/null 2>&1; then
            curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-27.3.1.tgz \
              | tar xz -C /usr/local/bin --strip-components=1 docker/docker
          fi
          docker --version

      - name: An der Registry anmelden
        run: |
          echo "${{ secrets.REGISTRY_TOKEN }}" \
            | docker login "${{ env.REGISTRY }}" \
                --username "${{ secrets.REGISTRY_USER }}" \
                --password-stdin

      # Bewusst ohne buildx: der Runner ist amd64, ein einfacher docker build
      # genuegt und spart die Plugin-Installation.
      - name: Bauen
        run: |
          docker build \
            --file docker/Dockerfile \
            --tag "${{ env.IMAGE }}:latest" \
            --tag "${{ env.IMAGE }}:${{ gitea.sha }}" \
            .

      - name: Pushen
        run: |
          docker push "${{ env.IMAGE }}:latest"
          docker push "${{ env.IMAGE }}:${{ gitea.sha }}"

      - name: Abmelden
        if: always()
        run: docker logout "${{ env.REGISTRY }}" || true
