From 61db410e2db7b808729c4201b1faf7b2a9a1c942 Mon Sep 17 00:00:00 2001 From: pi-farm Date: Sat, 14 Feb 2026 00:46:54 +0100 Subject: [PATCH] reorder workflow --- .gitea/workflows/build-and-push.yaml | 43 ++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/.gitea/workflows/build-and-push.yaml b/.gitea/workflows/build-and-push.yaml index db31ae0..9443a5b 100644 --- a/.gitea/workflows/build-and-push.yaml +++ b/.gitea/workflows/build-and-push.yaml @@ -312,24 +312,43 @@ jobs: echo "DESCRIPTION<> $GITHUB_ENV echo -e "$DESCRIPTION" >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV + - name: Push README to Docker Hub - # WICHTIG: Verwende jetzt outputs.push_targets statt env.PUSH if: steps.check_changes.outputs.should_build == 'true' && contains(steps.prep.outputs.push_targets, 'dockerhub') run: | + # Tool Check & Install + if ! command -v jq &> /dev/null; then + echo "Installing jq..." + (apt-get update && apt-get install -y jq) || (apk add --no-cache jq) || echo "Could not install jq" + fi + + # Token holen 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) - if [ "$TOKEN" != "null" ]; then + if [ "$TOKEN" != "null" ] && [ -n "$TOKEN" ]; then REPO_PURE=${{ steps.prep.outputs.repo_pure }} DH_USER="${{ secrets.DOCKERHUB_USERNAME }}" + + # Kurzbeschreibung sicher für JSON formatieren SHORT_DESC=$(echo -e "${{ env.DESCRIPTION }}" | head -n 1 | cut -c 1-100) + echo "📤 Übertrage README und Metadata zu Docker Hub..." + # Wir nutzen jq, um das gesamte JSON-Objekt sicher zu bauen (verhindert Quotes-Fehler) + JSON_PAYLOAD=$(jq -n \ + --arg desc "$SHORT_DESC" \ + --arg full_desc "$(cat README.md)" \ + '{description: $desc, full_description: $full_desc}') + curl -s -X PATCH "https://hub.docker.com/v2/repositories/${DH_USER}/${REPO_PURE}/" \ -H "Authorization: JWT ${TOKEN}" \ -H "Content-Type: application/json" \ - -d "{ \"description\": \"${SHORT_DESC}\", \"full_description\": $(jq -Rs . < README.md) }" + -d "$JSON_PAYLOAD" echo "✅ Docker Hub erfolgreich aktualisiert." + else + echo "❌ Docker Hub Login fehlgeschlagen (Token ist leer)." + exit 1 fi - name: Commit, Tag and Push Changes @@ -344,22 +363,30 @@ jobs: git push -f origin "v${{ steps.prep.outputs.docker_tag }}" - name: Cleanup Temporary Tags on Docker Hub - # WICHTIG: Verwende jetzt outputs.push_targets if: steps.check_changes.outputs.should_build == 'true' && contains(steps.prep.outputs.push_targets, 'dockerhub') run: | + if ! command -v jq &> /dev/null; then + (apt-get update && apt-get install -y jq) || (apk add --no-cache jq) || true + fi + + echo "🧹 Aufräumen temporärer Docker Hub Tags..." + 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) - if [ "$TOKEN" != "null" ]; then + 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 - curl -s -X DELETE "https://hub.docker.com/v2/repositories/${DH_USER}/${REPO_PURE}/tags/$t/" \ - -H "Authorization: JWT ${TOKEN}" - echo "Tag $t bereinigt." + echo "Lösche 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}") + echo "Status: $STATUS" done + echo "✅ Temporäre Tags entfernt." fi - name: Cleanup Temporary Registry Tags (Gitea)