This commit is contained in:
@@ -190,7 +190,7 @@ jobs:
|
|||||||
- name: Push README to Docker Hub
|
- name: Push README to Docker Hub
|
||||||
if: steps.check_changes.outputs.should_build == 'true' && contains(env.PUSH, 'dockerhub')
|
if: steps.check_changes.outputs.should_build == 'true' && contains(env.PUSH, 'dockerhub')
|
||||||
run: |
|
run: |
|
||||||
# 1. Login-Token holen
|
# Token holen
|
||||||
TOKEN=$(curl -s -X POST "https://hub.docker.com/v2/users/login/" \
|
TOKEN=$(curl -s -X POST "https://hub.docker.com/v2/users/login/" \
|
||||||
-H "Content-Type: application/json" \
|
-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)
|
||||||
@@ -199,23 +199,19 @@ jobs:
|
|||||||
REPO_PURE=${{ steps.prep.outputs.repo_pure }}
|
REPO_PURE=${{ steps.prep.outputs.repo_pure }}
|
||||||
DH_USER="${{ secrets.DOCKERHUB_USERNAME }}"
|
DH_USER="${{ secrets.DOCKERHUB_USERNAME }}"
|
||||||
|
|
||||||
# 2. README und Kurzbeschreibung (DESCRIPTION) übertragen
|
# Kurzbeschreibung für die API säubern (nur erste Zeile, max 100 Zeichen)
|
||||||
# jq --raw-input --slurp liest die ganze Datei als einen JSON-String ein
|
SHORT_DESC=$(echo -e "${{ env.DESCRIPTION }}" | head -n 1 | cut -c 1-100)
|
||||||
echo "📤 Übertrage README zu Docker Hub..."
|
|
||||||
|
echo "📤 Übertrage README und Metadata zu Docker Hub..."
|
||||||
curl -s -X PATCH "https://hub.docker.com/v2/repositories/${DH_USER}/${REPO_PURE}/" \
|
curl -s -X PATCH "https://hub.docker.com/v2/repositories/${DH_USER}/${REPO_PURE}/" \
|
||||||
-H "Authorization: JWT ${TOKEN}" \
|
-H "Authorization: JWT ${TOKEN}" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d "{
|
-d "{
|
||||||
\"description\": \"${DESCRIPTION}\",
|
\"description\": \"${SHORT_DESC}\",
|
||||||
\"full_description\": $(jq -Rs . < README.md)
|
\"full_description\": $(jq -Rs . < README.md)
|
||||||
}"
|
}"
|
||||||
echo "✅ README erfolgreich aktualisiert."
|
echo "✅ Docker Hub erfolgreich aktualisiert."
|
||||||
else
|
|
||||||
echo "❌ Docker Hub API Login fehlgeschlagen!"
|
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
env:
|
|
||||||
DESCRIPTION: ${{ env.DESCRIPTION }} # Aus buildargs.env
|
|
||||||
|
|
||||||
- name: Cleanup Temporary Registry Tags
|
- name: Cleanup Temporary Registry Tags
|
||||||
if: steps.check_changes.outputs.should_build == 'true'
|
if: steps.check_changes.outputs.should_build == 'true'
|
||||||
@@ -382,41 +378,40 @@ jobs:
|
|||||||
line="${line//__DOCKER_RUN__/$DOCKER_RUN_FINAL}"
|
line="${line//__DOCKER_RUN__/$DOCKER_RUN_FINAL}"
|
||||||
line="${line//__DOCKERHUB_LINK__/$DOCKERHUB_LINK_CONTENT}"
|
line="${line//__DOCKERHUB_LINK__/$DOCKERHUB_LINK_CONTENT}"
|
||||||
|
|
||||||
# NEU: Description (mit Fallback, falls die Variable mal fehlt)
|
if [[ "$line" == *"__DESCRIPTION__"* ]]; then
|
||||||
line="${line//__DESCRIPTION__/${DESCRIPTION:-Keine Beschreibung angegeben.}}"
|
# echo -e interpretiert das \n als echte neue Zeile
|
||||||
|
echo -e "${DESCRIPTION:-Keine Beschreibung.}" >> "$output"
|
||||||
|
|
||||||
# 2. Block Injection
|
# 2. Block Injection
|
||||||
if [[ "$line" == *"__ENV_BLOCK__"* ]]; then
|
if [[ "$line" == *"__DESCRIPTION__"* ]]; then
|
||||||
if [ -n "$ENV_BLOCK_CONTENT" ]; then
|
# echo -e interpretiert das \n als echte neue Zeile
|
||||||
echo -e "${ENV_BLOCK_CONTENT}" >> "$output"
|
echo -e "${DESCRIPTION:-Keine Beschreibung.}" >> "$output"
|
||||||
fi
|
elif [[ "$line" == *"__ENV_BLOCK__"* ]]; then
|
||||||
|
[ -n "$ENV_BLOCK_CONTENT" ] && echo -e "${ENV_BLOCK_CONTENT}" >> "$output"
|
||||||
elif [[ "$line" == *"__PORTS_BLOCK__"* ]]; then
|
elif [[ "$line" == *"__PORTS_BLOCK__"* ]]; then
|
||||||
if [ -n "$PORTS_BLOCK_CONTENT" ]; then
|
[ -n "$PORTS_BLOCK_CONTENT" ] && echo -e "${PORTS_BLOCK_CONTENT}" >> "$output"
|
||||||
echo -e "${PORTS_BLOCK_CONTENT}" >> "$output"
|
|
||||||
fi
|
|
||||||
elif [[ "$line" == *"__VOL_BLOCK__"* ]]; then
|
elif [[ "$line" == *"__VOL_BLOCK__"* ]]; then
|
||||||
if [ -n "$VOL_BLOCK_CONTENT" ]; then
|
[ -n "$VOL_BLOCK_CONTENT" ] && echo -e "${VOL_BLOCK_CONTENT}" >> "$output"
|
||||||
echo -e "${VOL_BLOCK_CONTENT}" >> "$output"
|
|
||||||
fi
|
|
||||||
# NEU: Compose Block Injection
|
|
||||||
elif [[ "$line" == *"__COMPOSE_BLOCK__"* ]]; then
|
elif [[ "$line" == *"__COMPOSE_BLOCK__"* ]]; then
|
||||||
if [ -f "docker-compose.yml" ]; then
|
[ -f "docker-compose.yml" ] && cat docker-compose.yml >> "$output"
|
||||||
cat docker-compose.yml >> "$output"
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
# Wenn kein Block-Platzhalter, schreibe die normale Zeile
|
|
||||||
echo "$line" >> "$output"
|
echo "$line" >> "$output"
|
||||||
fi
|
fi
|
||||||
done < "$template"
|
done < "$template"
|
||||||
fi
|
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 "docker-compose.template" "docker-compose.yml"
|
||||||
process_template "README.template" "README.md"
|
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<<EOF" >> $GITHUB_ENV
|
||||||
|
echo -e "$DESCRIPTION" >> $GITHUB_ENV
|
||||||
|
echo "EOF" >> $GITHUB_ENV
|
||||||
|
|
||||||
echo "FINAL_MSG=$COMMIT_MSG" >> $GITHUB_ENV
|
echo "FINAL_MSG=$COMMIT_MSG" >> $GITHUB_ENV
|
||||||
|
echo "PUSH=$PUSH" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Commit, Tag and Push Changes
|
- name: Commit, Tag and Push Changes
|
||||||
if: steps.check_changes.outputs.should_build == 'true'
|
if: steps.check_changes.outputs.should_build == 'true'
|
||||||
|
|||||||
@@ -20,4 +20,4 @@ ENV_PGID=1000
|
|||||||
# VOL_DATA=./data:/data
|
# VOL_DATA=./data:/data
|
||||||
# PORT_WEB=8080:80
|
# PORT_WEB=8080:80
|
||||||
PUSH=gitea,dockerhub
|
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"
|
||||||
|
|||||||
Reference in New Issue
Block a user