diff --git a/.gitea/workflows/docker-builder.yml b/.gitea/workflows/docker-builder.yml index 035f82f..04a2726 100644 --- a/.gitea/workflows/docker-builder.yml +++ b/.gitea/workflows/docker-builder.yml @@ -1,4 +1,4 @@ -name: Docker Build Split +name: Docker Build Dynamic on: push: @@ -7,47 +7,49 @@ on: workflow_dispatch: env: - # Das Ziel-Repo (Das saubere Repo) - IMAGE_NAME: git.pi-farm.de/pi-farm/docker-baseimage-alpine - # Das Cache-Repo (Für die Zwischen-Images) - MUSS IN GITEA EXISTIEREN - CACHE_IMAGE_NAME: git.pi-farm.de/pi-farm/docker-baseimage-alpine-cache + REGISTRY_HOST: git.pi-farm.de + # Nutzt das aktuelle Repo (z.B. pi-farm/docker-baseimage-alpine) + IMAGE_BASE: ${{ gitea.repository }} jobs: build: - name: Build amd64 & arm64 separately + name: Build amd64 & arm64 runs-on: buildx-multiarch steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Set image tag from branch + - name: Set dynamic variables run: | + # Branch Name als Version VERSION=$(git rev-parse --abbrev-ref HEAD) - if [ -z "$VERSION" ]; then - echo "ERROR: could not determine branch name" - exit 1 - fi + + # Zusammenbau der vollen Pfade + # Ziel: git.pi-farm.de/owner/repo + FULL_IMAGE_NAME="${{ env.REGISTRY_HOST }}/${{ env.IMAGE_BASE }}" + + # Ziel: git.pi-farm.de/owner/repo-cache + CACHE_IMAGE_NAME="${{ env.REGISTRY_HOST }}/${{ env.IMAGE_BASE }}-cache" + echo "VERSION=$VERSION" >> $GITEA_ENV + echo "IMAGE_NAME=$FULL_IMAGE_NAME" >> $GITEA_ENV + echo "CACHE_IMAGE_NAME=$CACHE_IMAGE_NAME" >> $GITEA_ENV echo "BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> $GITEA_ENV - name: Login to registry run: | echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login \ - git.pi-farm.de \ + ${{ env.REGISTRY_HOST }} \ -u ${{ secrets.REGISTRY_USER }} \ --password-stdin - name: Setup buildx run: | docker buildx rm multiarch || true - docker buildx create \ - --name multiarch \ - --driver docker-container \ - --use + docker buildx create --name multiarch --driver docker-container --use docker buildx inspect --bootstrap - # SCHRITT 1: AMD64 bauen -> In das CACHE Repo pushen - name: Build & push amd64 (Cache) run: | docker buildx build \ @@ -56,10 +58,8 @@ jobs: --build-arg BUILD_DATE=${BUILD_DATE} \ --build-arg VERSION=${VERSION} \ -t ${CACHE_IMAGE_NAME}:${VERSION}-amd64 \ - --push \ - . + --push . - # SCHRITT 2: ARM64 bauen -> In das CACHE Repo pushen - name: Build & push arm64 (Cache) run: | docker buildx build \ @@ -68,12 +68,8 @@ jobs: --build-arg BUILD_DATE=${BUILD_DATE} \ --build-arg VERSION=${VERSION} \ -t ${CACHE_IMAGE_NAME}:${VERSION}-arm64 \ - --push \ - . + --push . - # SCHRITT 3: Manifest erstellen -> In das PROD Repo pushen - # Hier geschieht die Magie: Wir nehmen die Quellen aus dem Cache-Repo - # und erstellen das Manifest im Prod-Repo. - name: Create and push manifest to Prod run: | docker buildx imagetools create \