fix push to Dockerhub
All checks were successful
/ release-and-build (push) Successful in 58s

This commit is contained in:
2026-02-13 23:39:02 +01:00
parent 09756917a0
commit 10b2ff1fb1

View File

@@ -134,50 +134,51 @@ jobs:
source <(grep -v '^#' buildargs.env | sed 's/\r$//')
set +a
# 1. Ziel-Images definieren
# Wir starten immer mit Gitea
TARGETS=("-t $IMAGE_GITEA:tmp-amd64" "-t $IMAGE_GITEA:tmp-arm64")
FINAL_TAGS=("-t $IMAGE_GITEA:$TAG" "-t $IMAGE_GITEA:latest")
# 1. Gemeinsame Build-Args in ein Array
DOCKER_ARGS=()
keys=$(grep -v '^#' buildargs.env | cut -d'=' -f1 | tr -d '\r')
for k in $keys; do
DOCKER_ARGS+=("--build-arg" "$k=${!k}")
done
# Base SHA ermitteln
BASE_SHA=$(docker buildx imagetools inspect $BASE --format '{{json .Manifest.Digest}}' 2>/dev/null | tr -d '"' || echo "unknown")
# 2. Docker Hub Check
# 2. Arrays für die Tags (AMD64 und ARM64 getrennt)
AMD_TAGS=("-t" "$IMAGE_GITEA:tmp-amd64")
ARM_TAGS=("-t" "$IMAGE_GITEA:tmp-arm64")
# Docker Hub hinzufügen, falls aktiviert
if [[ "$PUSH" == *"dockerhub"* ]]; then
DOCKERHUB_REPO="${{ secrets.DOCKERHUB_USERNAME }}/$REPO_PURE"
echo "📢 Docker Hub Push aktiviert für: $DOCKERHUB_REPO"
TARGETS+=("-t $DOCKERHUB_REPO:tmp-amd64" "-t $DOCKERHUB_REPO:tmp-arm64")
FINAL_TAGS+=("-t $DOCKERHUB_REPO:$TAG" "-t $DOCKERHUB_REPO:latest")
AMD_TAGS+=("-t" "$DOCKERHUB_REPO:tmp-amd64")
ARM_TAGS+=("-t" "$DOCKERHUB_REPO:tmp-arm64")
fi
# 3. Build-Args Array (wie besprochen)
DOCKER_ARGS=()
keys=$(grep -v '^#' buildargs.env | cut -d'=' -f1 | tr -d '\r')
for k in $keys; do DOCKER_ARGS+=("--build-arg" "$k=${!k}"); done
# 3. Multi-Arch Build (jetzt mit sauberen Arrays)
# AMD64
docker buildx build "${DOCKER_ARGS[@]}" "${AMD_TAGS[@]}" \
--pull --platform linux/amd64 -f Dockerfile \
--label "pi_farm.base_digest=$BASE_SHA" \
--label "pi_farm.args_hash=$ARGS_HASH" \
--push .
BASE_SHA=$(docker buildx imagetools inspect $BASE --format '{{json .Manifest.Digest}}' 2>/dev/null | tr -d '"' || echo "unknown")
# 4. Multi-Arch Build (Pusht die Fragmente zu allen Zielen)
# Wir filtern hier nach Architektur-Tags
AMD_TARGETS=$(echo "${TARGETS[@]}" | tr ' ' '\n' | grep 'amd64' | xargs)
ARM_TARGETS=$(echo "${TARGETS[@]}" | tr ' ' '\n' | grep 'arm64' | xargs)
docker buildx build "${DOCKER_ARGS[@]}" --pull --platform linux/amd64 -f Dockerfile \
--label "pi_farm.base_digest=$BASE_SHA" --label "pi_farm.args_hash=$ARGS_HASH" \
$AMD_TARGETS --push .
# ARM64
docker buildx build "${DOCKER_ARGS[@]}" "${ARM_TAGS[@]}" \
--pull --platform linux/arm64 -f Dockerfile.aarch64 \
--label "pi_farm.base_digest=$BASE_SHA" \
--label "pi_farm.args_hash=$ARGS_HASH" \
--push .
docker buildx build "${DOCKER_ARGS[@]}" --pull --platform linux/arm64 -f Dockerfile.aarch64 \
--label "pi_farm.base_digest=$BASE_SHA" --label "pi_farm.args_hash=$ARGS_HASH" \
$ARM_TARGETS --push .
# 5. Manifeste zusammenführen (Multi-Registry Support)
# Wir erstellen das Manifest für Gitea UND Docker Hub
# Hier loopen wir durch die finalen Image-Namen (Gitea und ggf. Dockerhub)
# Gitea Manifest
# 4. Manifeste finalisieren
# Gitea
docker buildx imagetools create \
--annotation "index:pi_farm.base_digest=$BASE_SHA" \
--annotation "index:pi_farm.args_hash=$ARGS_HASH" \
-t $IMAGE_GITEA:$TAG -t $IMAGE_GITEA:latest $IMAGE_GITEA:tmp-amd64 $IMAGE_GITEA:tmp-arm64
# Docker Hub Manifest (falls gewünscht)
# Docker Hub (Manifest für die finalen Tags erstellen)
if [[ "$PUSH" == *"dockerhub"* ]]; then
DOCKERHUB_REPO="${{ secrets.DOCKERHUB_USERNAME }}/$REPO_PURE"
docker buildx imagetools create \
@@ -185,7 +186,7 @@ jobs:
--annotation "index:pi_farm.args_hash=$ARGS_HASH" \
-t $DOCKERHUB_REPO:$TAG -t $DOCKERHUB_REPO:latest $IMAGE_GITEA:tmp-amd64 $IMAGE_GITEA:tmp-arm64
fi
- name: Push README to Docker Hub
if: steps.check_changes.outputs.should_build == 'true' && contains(env.PUSH, 'dockerhub')
run: |