fix build and cleanup steps if Dockerfile.aarch64 does not exist
build-and-push.yaml / release-and-build (push) Canceled after 1m44s
build-and-push.yaml / release-and-build (push) Canceled after 1m44s
This commit is contained in:
1 parent
0d1bf8ecde
commit
d25f1697c5
1 file changed
+40
-16
@@ -143,26 +143,40 @@ jobs:
|
||||
|
||||
BASE_SHA=$(docker buildx imagetools inspect $BASE --format '{{json .Manifest.Digest}}' 2>/dev/null | tr -d '"' || echo "unknown")
|
||||
|
||||
# Bereite die Tags für den initialen Build vor (Gitea immer, Docker Hub optional)
|
||||
# AMD64 ist immer das primäre Target
|
||||
AMD_TAGS=("-t" "$IMAGE_GITEA:tmp-amd64")
|
||||
ARM_TAGS=("-t" "$IMAGE_GITEA:tmp-arm64")
|
||||
GITEA_SOURCES=("$IMAGE_GITEA:tmp-amd64")
|
||||
|
||||
if [[ "$PUSH" == *"dockerhub"* ]]; then
|
||||
AMD_TAGS+=("-t" "$DOCKERHUB_REPO:tmp-amd64")
|
||||
ARM_TAGS+=("-t" "$DOCKERHUB_REPO:tmp-arm64")
|
||||
DH_SOURCES=("$DOCKERHUB_REPO:tmp-amd64")
|
||||
fi
|
||||
|
||||
# Build AMD64 & Push zu allen Zielen
|
||||
# 1. Build AMD64 & Push
|
||||
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 .
|
||||
|
||||
# Build ARM64 & Push zu allen Zielen
|
||||
# 2. Prüfung auf ARM64 Dockerfile
|
||||
if [ -f "Dockerfile.aarch64" ]; then
|
||||
echo "⚙️ Dockerfile.aarch64 gefunden. Baue ARM64 Image..."
|
||||
|
||||
ARM_TAGS=("-t" "$IMAGE_GITEA:tmp-arm64")
|
||||
GITEA_SOURCES+=("$IMAGE_GITEA:tmp-arm64")
|
||||
|
||||
if [[ "$PUSH" == *"dockerhub"* ]]; then
|
||||
ARM_TAGS+=("-t" "$DOCKERHUB_REPO:tmp-arm64")
|
||||
DH_SOURCES+=("$DOCKERHUB_REPO:tmp-arm64")
|
||||
fi
|
||||
|
||||
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 .
|
||||
else
|
||||
echo "ℹ️ Keine Dockerfile.aarch64 gefunden. ARM64 Build wird übersprungen."
|
||||
fi
|
||||
|
||||
# 1. Manifest auf Gitea erstellen (aus Gitea Temp-Tags)
|
||||
# 3. Manifest auf Gitea erstellen (nutzt nur die tatsächlich gebauten Temp-Tags)
|
||||
GITEA_MANIFEST_TAGS=("-t" "$IMAGE_GITEA:$TAG")
|
||||
if [[ "$BUILD_TAG_LATEST" == "y" ]]; then
|
||||
GITEA_MANIFEST_TAGS+=("-t" "$IMAGE_GITEA:latest")
|
||||
@@ -170,19 +184,18 @@ jobs:
|
||||
|
||||
docker buildx imagetools create \
|
||||
--annotation "index:pi_farm.base_digest=$BASE_SHA" --annotation "index:pi_farm.args_hash=$ARGS_HASH" \
|
||||
"${GITEA_MANIFEST_TAGS[@]}" $IMAGE_GITEA:tmp-amd64 $IMAGE_GITEA:tmp-arm64
|
||||
"${GITEA_MANIFEST_TAGS[@]}" "${GITEA_SOURCES[@]}"
|
||||
|
||||
# 2. Manifest auf Docker Hub erstellen (aus Docker Hub Temp-Tags!)
|
||||
# 4. Manifest auf Docker Hub erstellen
|
||||
if [[ "$PUSH" == *"dockerhub"* ]]; then
|
||||
DH_MANIFEST_TAGS=("-t" "$DOCKERHUB_REPO:$TAG")
|
||||
if [[ "$BUILD_TAG_LATEST" == "y" ]]; then
|
||||
DH_MANIFEST_TAGS+=("-t" "$DOCKERHUB_REPO:latest")
|
||||
fi
|
||||
|
||||
# WICHTIG: Hier werden jetzt als Quelle die Docker Hub Temp-Tags genutzt!
|
||||
docker buildx imagetools create \
|
||||
--annotation "index:pi_farm.base_digest=$BASE_SHA" --annotation "index:pi_farm.args_hash=$ARGS_HASH" \
|
||||
"${DH_MANIFEST_TAGS[@]}" $DOCKERHUB_REPO:tmp-amd64 $DOCKERHUB_REPO:tmp-arm64
|
||||
"${DH_MANIFEST_TAGS[@]}" "${DH_SOURCES[@]}"
|
||||
fi
|
||||
|
||||
- name: Update Documentation and Compose
|
||||
@@ -436,17 +449,23 @@ jobs:
|
||||
|
||||
TOKEN=$(curl -s -X POST "https://hub.docker.com/v2/users/login/" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"username\": \"${{ secrets.DOCKERHUB_USERNAME }}\", \"password\": \"${{ secrets.DOCKERHUB_TOKEN }}\"}" | jq -r .token)
|
||||
-d "{\"username\": \"${{ secrets.DOCKERHUB_USERNAME }}\", \"password\": \"${{ secrets.DOCKERHUB_TOKEN }}\"}" | jq -r .token || echo "")
|
||||
|
||||
if [ "$TOKEN" != "null" ] && [ -n "$TOKEN" ]; then
|
||||
REPO_PURE=${{ steps.prep.outputs.repo_pure }}
|
||||
DH_USER="${{ secrets.DOCKERHUB_USERNAME }}"
|
||||
|
||||
for t in tmp-amd64 tmp-arm64; do
|
||||
# Nur existierende Tags löschen
|
||||
CLEAN_TAGS=("tmp-amd64")
|
||||
if [ -f "Dockerfile.aarch64" ]; then
|
||||
CLEAN_TAGS+=("tmp-arm64")
|
||||
fi
|
||||
|
||||
for t in "${CLEAN_TAGS[@]}"; do
|
||||
echo "Deleting tag $t..."
|
||||
STATUS=$(curl -s -o /dev/null -w "%{http_code}" -X DELETE \
|
||||
"https://hub.docker.com/v2/repositories/${DH_USER}/${REPO_PURE}/tags/$t/" \
|
||||
-H "Authorization: JWT ${TOKEN}")
|
||||
-H "Authorization: JWT ${TOKEN}" || echo "000")
|
||||
echo "Status: $STATUS"
|
||||
done
|
||||
echo "✅ Temp. tags deleted."
|
||||
@@ -459,9 +478,14 @@ jobs:
|
||||
ORG_NAME=$(echo "${{ gitea.repository }}" | cut -d'/' -f1)
|
||||
REPO_NAME=$(echo "${{ gitea.repository }}" | cut -d'/' -f2)
|
||||
|
||||
for t in tmp-amd64 tmp-arm64; do
|
||||
curl -s -X DELETE "https://git.pi-farm.de/api/v1/packages/$ORG_NAME/container/$REPO_NAME/$t" -H "Authorization: token $TOKEN"
|
||||
curl -s -X DELETE "https://git.pi-farm.de/api/v1/packages/${ORG_NAME,,}/container/${REPO_NAME,,}/$t" -H "Authorization: token $TOKEN"
|
||||
CLEAN_TAGS=("tmp-amd64")
|
||||
if [ -f "Dockerfile.aarch64" ]; then
|
||||
CLEAN_TAGS+=("tmp-arm64")
|
||||
fi
|
||||
|
||||
for t in "${CLEAN_TAGS[@]}"; do
|
||||
curl -s -X DELETE "https://git.pi-farm.de/api/v1/packages/$ORG_NAME/container/$REPO_NAME/$t" -H "Authorization: token $TOKEN" || true
|
||||
curl -s -X DELETE "https://git.pi-farm.de/api/v1/packages/${ORG_NAME,,}/container/${REPO_NAME,,}/$t" -H "Authorization: token $TOKEN" || true
|
||||
done
|
||||
|
||||
- name: Cleanup Docker Artifacts
|
||||
|
||||
Reference in new issue
Block a user