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$//') source <(grep -v '^#' buildargs.env | sed 's/\r$//')
set +a set +a
# 1. Ziel-Images definieren # 1. Gemeinsame Build-Args in ein Array
# Wir starten immer mit Gitea DOCKER_ARGS=()
TARGETS=("-t $IMAGE_GITEA:tmp-amd64" "-t $IMAGE_GITEA:tmp-arm64") keys=$(grep -v '^#' buildargs.env | cut -d'=' -f1 | tr -d '\r')
FINAL_TAGS=("-t $IMAGE_GITEA:$TAG" "-t $IMAGE_GITEA:latest") for k in $keys; do
DOCKER_ARGS+=("--build-arg" "$k=${!k}")
done
# 2. Docker Hub Check # Base SHA ermitteln
BASE_SHA=$(docker buildx imagetools inspect $BASE --format '{{json .Manifest.Digest}}' 2>/dev/null | tr -d '"' || echo "unknown")
# 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 if [[ "$PUSH" == *"dockerhub"* ]]; then
DOCKERHUB_REPO="${{ secrets.DOCKERHUB_USERNAME }}/$REPO_PURE" DOCKERHUB_REPO="${{ secrets.DOCKERHUB_USERNAME }}/$REPO_PURE"
echo "📢 Docker Hub Push aktiviert für: $DOCKERHUB_REPO" echo "📢 Docker Hub Push aktiviert für: $DOCKERHUB_REPO"
TARGETS+=("-t $DOCKERHUB_REPO:tmp-amd64" "-t $DOCKERHUB_REPO:tmp-arm64") AMD_TAGS+=("-t" "$DOCKERHUB_REPO:tmp-amd64")
FINAL_TAGS+=("-t $DOCKERHUB_REPO:$TAG" "-t $DOCKERHUB_REPO:latest") ARM_TAGS+=("-t" "$DOCKERHUB_REPO:tmp-arm64")
fi fi
# 3. Build-Args Array (wie besprochen) # 3. Multi-Arch Build (jetzt mit sauberen Arrays)
DOCKER_ARGS=() # AMD64
keys=$(grep -v '^#' buildargs.env | cut -d'=' -f1 | tr -d '\r') docker buildx build "${DOCKER_ARGS[@]}" "${AMD_TAGS[@]}" \
for k in $keys; do DOCKER_ARGS+=("--build-arg" "$k=${!k}"); done --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") # 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 .
# 4. Multi-Arch Build (Pusht die Fragmente zu allen Zielen) # 4. Manifeste finalisieren
# Wir filtern hier nach Architektur-Tags # Gitea
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 .
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
docker buildx imagetools create \ docker buildx imagetools create \
--annotation "index:pi_farm.base_digest=$BASE_SHA" \ --annotation "index:pi_farm.base_digest=$BASE_SHA" \
--annotation "index:pi_farm.args_hash=$ARGS_HASH" \ --annotation "index:pi_farm.args_hash=$ARGS_HASH" \
-t $IMAGE_GITEA:$TAG -t $IMAGE_GITEA:latest $IMAGE_GITEA:tmp-amd64 $IMAGE_GITEA:tmp-arm64 -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 if [[ "$PUSH" == *"dockerhub"* ]]; then
DOCKERHUB_REPO="${{ secrets.DOCKERHUB_USERNAME }}/$REPO_PURE" DOCKERHUB_REPO="${{ secrets.DOCKERHUB_USERNAME }}/$REPO_PURE"
docker buildx imagetools create \ docker buildx imagetools create \