name: Docker-Images bauen und veröffentlichen

on:
  push:
    tags: ["v*"]

env:
  REGISTRY: git.omsorg-pflegedienste.de
  IMAGE_NAMESPACE: admin/omsorg

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
          - image: omsorgcore
            dockerfile: omsorgCore/Dockerfile
            build_args: ""
          - image: omsorgapp
            dockerfile: omsorgapp/Dockerfile
            build_args: ""
          - image: omsorgweb
            dockerfile: omsorgWeb/Dockerfile
            build_args: ""
    steps:
      - name: Code auschecken
        uses: actions/checkout@v4

      - name: Bei Registry anmelden
        run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login ${{ env.REGISTRY }} -u "${{ gitea.actor }}" --password-stdin

      - name: Image bauen und pushen
        run: |
          BUILD_ARGS=""
          if [ -n "${{ matrix.build_args }}" ]; then
            BUILD_ARGS="--build-arg ${{ matrix.build_args }}"
          fi

          IMAGE="${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/${{ matrix.image }}"
          # Läuft nur noch bei einem Tag-Push (siehe `on:` oben) - :latest zeigt damit immer auf
          # den zuletzt getaggten Release, nicht auf jeden main-Commit. :<sha> bleibt zusätzlich
          # als exakter Build-Beleg, :<tag-name> (z.B. v0.1.3) zum gezielten Pinnen.
          TAGS="-t $IMAGE:latest -t $IMAGE:${{ gitea.sha }} -t $IMAGE:${{ gitea.ref_name }}"

          docker buildx build \
            --push \
            -f "${{ matrix.dockerfile }}" \
            $TAGS \
            $BUILD_ARGS \
            .
