This commit is contained in:
@@ -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
|
||||
|
||||
# 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
|
||||
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")
|
||||
# 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)
|
||||
# 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 .
|
||||
|
||||
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 \
|
||||
|
||||
Reference in New Issue
Block a user