From d38ac15f44d3dfb67db839a42d8510629ff5a816 Mon Sep 17 00:00:00 2001 From: pi-farm Date: Fri, 13 Feb 2026 23:56:14 +0100 Subject: [PATCH] fix push to Dockerhub --- .gitea/workflows/build-and-push.yaml | 55 +++++++++++++--------------- buildargs.env | 2 +- 2 files changed, 26 insertions(+), 31 deletions(-) diff --git a/.gitea/workflows/build-and-push.yaml b/.gitea/workflows/build-and-push.yaml index 6710398..de6b848 100644 --- a/.gitea/workflows/build-and-push.yaml +++ b/.gitea/workflows/build-and-push.yaml @@ -190,7 +190,7 @@ jobs: - name: Push README to Docker Hub if: steps.check_changes.outputs.should_build == 'true' && contains(env.PUSH, 'dockerhub') run: | - # 1. Login-Token holen + # 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) @@ -199,23 +199,19 @@ jobs: REPO_PURE=${{ steps.prep.outputs.repo_pure }} DH_USER="${{ secrets.DOCKERHUB_USERNAME }}" - # 2. README und Kurzbeschreibung (DESCRIPTION) übertragen - # jq --raw-input --slurp liest die ganze Datei als einen JSON-String ein - echo "📤 Übertrage README zu Docker Hub..." + # Kurzbeschreibung für die API säubern (nur erste Zeile, max 100 Zeichen) + SHORT_DESC=$(echo -e "${{ env.DESCRIPTION }}" | head -n 1 | cut -c 1-100) + + echo "📤 Übertrage README und Metadata zu Docker Hub..." 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\": \"${DESCRIPTION}\", + \"description\": \"${SHORT_DESC}\", \"full_description\": $(jq -Rs . < README.md) }" - echo "✅ README erfolgreich aktualisiert." - else - echo "❌ Docker Hub API Login fehlgeschlagen!" - exit 1 + echo "✅ Docker Hub erfolgreich aktualisiert." fi - env: - DESCRIPTION: ${{ env.DESCRIPTION }} # Aus buildargs.env - name: Cleanup Temporary Registry Tags if: steps.check_changes.outputs.should_build == 'true' @@ -382,41 +378,40 @@ jobs: line="${line//__DOCKER_RUN__/$DOCKER_RUN_FINAL}" line="${line//__DOCKERHUB_LINK__/$DOCKERHUB_LINK_CONTENT}" - # NEU: Description (mit Fallback, falls die Variable mal fehlt) - line="${line//__DESCRIPTION__/${DESCRIPTION:-Keine Beschreibung angegeben.}}" + if [[ "$line" == *"__DESCRIPTION__"* ]]; then + # echo -e interpretiert das \n als echte neue Zeile + echo -e "${DESCRIPTION:-Keine Beschreibung.}" >> "$output" # 2. Block Injection - if [[ "$line" == *"__ENV_BLOCK__"* ]]; then - if [ -n "$ENV_BLOCK_CONTENT" ]; then - echo -e "${ENV_BLOCK_CONTENT}" >> "$output" - fi + if [[ "$line" == *"__DESCRIPTION__"* ]]; then + # echo -e interpretiert das \n als echte neue Zeile + echo -e "${DESCRIPTION:-Keine Beschreibung.}" >> "$output" + elif [[ "$line" == *"__ENV_BLOCK__"* ]]; then + [ -n "$ENV_BLOCK_CONTENT" ] && echo -e "${ENV_BLOCK_CONTENT}" >> "$output" elif [[ "$line" == *"__PORTS_BLOCK__"* ]]; then - if [ -n "$PORTS_BLOCK_CONTENT" ]; then - echo -e "${PORTS_BLOCK_CONTENT}" >> "$output" - fi + [ -n "$PORTS_BLOCK_CONTENT" ] && echo -e "${PORTS_BLOCK_CONTENT}" >> "$output" elif [[ "$line" == *"__VOL_BLOCK__"* ]]; then - if [ -n "$VOL_BLOCK_CONTENT" ]; then - echo -e "${VOL_BLOCK_CONTENT}" >> "$output" - fi - # NEU: Compose Block Injection + [ -n "$VOL_BLOCK_CONTENT" ] && echo -e "${VOL_BLOCK_CONTENT}" >> "$output" elif [[ "$line" == *"__COMPOSE_BLOCK__"* ]]; then - if [ -f "docker-compose.yml" ]; then - cat docker-compose.yml >> "$output" - fi + [ -f "docker-compose.yml" ] && cat docker-compose.yml >> "$output" else - # Wenn kein Block-Platzhalter, schreibe die normale Zeile echo "$line" >> "$output" fi done < "$template" fi } - # WICHTIG: Zuerst Compose generieren, dann README! - # Nur so können wir die fertige Compose-Datei in die README einfügen. process_template "docker-compose.template" "docker-compose.yml" process_template "README.template" "README.md" + + # --- MULTILINE EXPORT FÜR NÄCHSTE STEPS --- + # Das ist die Gitea/GitHub Syntax für mehrzeilige Variablen + echo "DESCRIPTION<> $GITHUB_ENV + echo -e "$DESCRIPTION" >> $GITHUB_ENV + echo "EOF" >> $GITHUB_ENV echo "FINAL_MSG=$COMMIT_MSG" >> $GITHUB_ENV + echo "PUSH=$PUSH" >> $GITHUB_ENV - name: Commit, Tag and Push Changes if: steps.check_changes.outputs.should_build == 'true' diff --git a/buildargs.env b/buildargs.env index 060e993..e867786 100644 --- a/buildargs.env +++ b/buildargs.env @@ -20,4 +20,4 @@ ENV_PGID=1000 # VOL_DATA=./data:/data # PORT_WEB=8080:80 PUSH=gitea,dockerhub -DESCRIPTION="Dies ist ein Alpine-basiertes Base-Image für meine Pi-Farm." +DESCRIPTION="This is a alpine-linux based image with s6-overlay.\nBased on the great work of Linuxserver.io"