From d194e1fa435bf43a4747d4e1d9cf348a9e0a7c86 Mon Sep 17 00:00:00 2001
From: "info@pi-farm.de" <6+pi-farm@noreply.git.pi-farm.de>
Date: Wed, 7 Oct 2026 15:51:23 +0000
Subject: [PATCH] .gitea/workflows/build-and-push.yaml aktualisiert
---
.gitea/workflows/build-and-push.yaml | 258 +++++++++++++--------------
1 file changed, 124 insertions(+), 134 deletions(-)
diff --git a/.gitea/workflows/build-and-push.yaml b/.gitea/workflows/build-and-push.yaml
index 7ac50c7..f37eb62 100644
--- a/.gitea/workflows/build-and-push.yaml
+++ b/.gitea/workflows/build-and-push.yaml
@@ -226,7 +226,7 @@ jobs:
source ./cleaned_env.sh
set +a
- # WICHTIG: Nach dem Sourcing den dynamischen Tag (inkl. -dev falls dev-Branch) erzwingen!
+ # Nach dem Sourcing den dynamischen Tag (inkl. -dev falls dev-Branch) erzwingen
BUILD_TAG="${{ steps.prep.outputs.docker_tag }}"
if [ -f "Dockerfile.aarch64" ]; then ARM_STATUS="✅ Active"; else ARM_STATUS="❌ Not supported"; fi
@@ -234,110 +234,100 @@ jobs:
RAW_COMMIT_MSG="${{ gitea.event.head_commit.message }}"
COMMIT_MSG=$(echo "$RAW_COMMIT_MSG" | sed 's/\[skip ci\]//g' | tr -d '\r\n' | xargs)
- # ... (restlicher Skriptverlauf bleibt unverändert)
+ TOKEN="${{ secrets.RUNNER_TOKEN }}"
+ curl -sSLf -H "Authorization: token $TOKEN" \
+ "https://git.pi-farm.de/pi-farm/templates/raw/branch/main/README.template" \
+ -o README.template || echo "Warnung: README Template konnte nicht geladen werden"
- # WICHTIG: Nach dem Sourcing den dynamischen Tag (inkl. -dev falls dev-Branch) erzwingen!
- BUILD_TAG="${{ steps.prep.outputs.docker_tag }}"
+ curl -sSLf -H "Authorization: token $TOKEN" \
+ "https://git.pi-farm.de/pi-farm/templates/raw/branch/main/docker-compose.template" \
+ -o docker-compose.template || echo "Warnung: Compose Template konnte nicht geladen werden"
- if [ -f "Dockerfile.aarch64" ]; then ARM_STATUS="✅ Active"; else ARM_STATUS="❌ Not supported"; fi
-
- RAW_COMMIT_MSG="${{ gitea.event.head_commit.message }}"
- COMMIT_MSG=$(echo "$RAW_COMMIT_MSG" | sed 's/\[skip ci\]//g' | tr -d '\r\n' | xargs)
-
- TOKEN="${{ secrets.RUNNER_TOKEN }}"
- curl -sSLf -H "Authorization: token $TOKEN" \
- "https://git.pi-farm.de/pi-farm/templates/raw/branch/main/README.template" \
- -o README.template || echo "Warnung: README Template konnte nicht geladen werden"
-
- curl -sSLf -H "Authorization: token $TOKEN" \
- "https://git.pi-farm.de/pi-farm/templates/raw/branch/main/docker-compose.template" \
- -o docker-compose.template || echo "Warnung: Compose Template konnte nicht geladen werden"
-
- for t_file in README.template docker-compose.template; do
- if [ -f "$t_file" ] && grep -qi "" "$t_file"; then
- echo "❌ FEHLER: $t_file ist eine HTML-Loginseite! Download verworfen."
- rm -f "$t_file"
- fi
- done
-
- NEW_ROW="| **$BUILD_TAG** | $CURRENT_TIME | $COMMIT_MSG ✅ |"
- if [ -f "VERSION.history" ]; then
- grep -v "| **$BUILD_TAG** |" VERSION.history > VERSION.history.tmp || true
- echo "$NEW_ROW" > VERSION.history
- cat VERSION.history.tmp >> VERSION.history
- rm VERSION.history.tmp
- else
- echo "$NEW_ROW" > VERSION.history
+ for t_file in README.template docker-compose.template; do
+ if [ -f "$t_file" ] && grep -qi "" "$t_file"; then
+ echo "❌ FEHLER: $t_file ist eine HTML-Loginseite! Download verworfen."
+ rm -f "$t_file"
fi
- HISTORY_CONTENT=$(cat VERSION.history)
+ done
- ENV_BLOCK_CONTENT=""
- env_vars=$(grep '^ENV_' buildargs.env | grep -v '^#' | tr -d '\r' || true)
- if [ -n "$env_vars" ]; then
- ENV_BLOCK_CONTENT=" environment:\n"
+ NEW_ROW="| **$BUILD_TAG** | $CURRENT_TIME | $COMMIT_MSG ✅ |"
+ if [ -f "VERSION.history" ]; then
+ grep -v "| **$BUILD_TAG** |" VERSION.history > VERSION.history.tmp || true
+ echo "$NEW_ROW" > VERSION.history
+ cat VERSION.history.tmp >> VERSION.history
+ rm VERSION.history.tmp
+ else
+ echo "$NEW_ROW" > VERSION.history
+ fi
+ HISTORY_CONTENT=$(cat VERSION.history)
+
+ ENV_BLOCK_CONTENT=""
+ env_vars=$(grep '^ENV_' buildargs.env | grep -v '^#' | tr -d '\r' || true)
+ if [ -n "$env_vars" ]; then
+ ENV_BLOCK_CONTENT=" environment:\n"
+ while read -r line; do
+ [ -z "$line" ] && continue
+ key=$(echo "$line" | cut -d= -f1); val=$(echo "$line" | cut -d= -f2-); clean_key=${key#ENV_}
+ ENV_BLOCK_CONTENT="${ENV_BLOCK_CONTENT} - ${clean_key}=${val}\n"
+ done <<< "$env_vars"
+ fi
+
+ PORTS_BLOCK_CONTENT=""
+ port_vars=$(grep '^PORT_' buildargs.env | grep -v '^#' | tr -d '\r' || true)
+ if [ -n "$port_vars" ]; then
+ PORTS_BLOCK_CONTENT=" ports:\n"
+ while read -r line; do
+ [ -z "$line" ] && continue
+ val=$(echo "$line" | cut -d= -f2-); PORTS_BLOCK_CONTENT="${PORTS_BLOCK_CONTENT} - ${val}\n"
+ done <<< "$port_vars"
+ fi
+
+ VOL_BLOCK_CONTENT=""
+ vol_vars=$(grep '^VOL_' buildargs.env | grep -v '^#' | tr -d '\r' || true)
+ if [ -n "$vol_vars" ]; then
+ VOL_BLOCK_CONTENT=" volumes:\n"
+ while read -r line; do
+ [ -z "$line" ] && continue
+ val=$(echo "$line" | cut -d= -f2-); VOL_BLOCK_CONTENT="${VOL_BLOCK_CONTENT} - ${val}\n"
+ done <<< "$vol_vars"
+ fi
+
+ {
+ echo "docker run -d \\"
+ echo " --name $REPO_PURE \\"
+ echo " --restart unless-stopped \\"
+
+ all_params=$(grep -E '^(PORT_|ENV_|VOL_)' buildargs.env | grep -v '^#' | sed 's/\r$//' || true)
+ if [ -n "$all_params" ]; then
while read -r line; do
[ -z "$line" ] && continue
- key=$(echo "$line" | cut -d= -f1); val=$(echo "$line" | cut -d= -f2-); clean_key=${key#ENV_}
- ENV_BLOCK_CONTENT="${ENV_BLOCK_CONTENT} - ${clean_key}=${val}\n"
- done <<< "$env_vars"
+ if [[ "$line" =~ ^PORT_ ]]; then
+ val=$(echo "$line" | cut -d= -f2-)
+ echo " -p ${val} \\"
+ elif [[ "$line" =~ ^ENV_ ]]; then
+ key=$(echo "$line" | cut -d= -f1); clean_key=${key#ENV_}; val=$(echo "$line" | cut -d= -f2-)
+ echo " -e ${clean_key}=${val} \\"
+ elif [[ "$line" =~ ^VOL_ ]]; then
+ val=$(echo "$line" | cut -d= -f2-)
+ echo " -v ${val} \\"
+ fi
+ done <<< "$all_params"
fi
+ echo " $FULL_URL:$BUILD_TAG"
+ } > docker_run_block.txt
- PORTS_BLOCK_CONTENT=""
- port_vars=$(grep '^PORT_' buildargs.env | grep -v '^#' | tr -d '\r' || true)
- if [ -n "$port_vars" ]; then
- PORTS_BLOCK_CONTENT=" ports:\n"
- while read -r line; do
- [ -z "$line" ] && continue
- val=$(echo "$line" | cut -d= -f2-); PORTS_BLOCK_CONTENT="${PORTS_BLOCK_CONTENT} - ${val}\n"
- done <<< "$port_vars"
- fi
+ DOCKERHUB_LINK_CONTENT=""
+ if [[ "${{ steps.prep.outputs.push_targets }}" == *"dockerhub"* ]]; then
+ DH_USER="${{ secrets.DOCKERHUB_USERNAME }}"
+ DOCKERHUB_LINK_CONTENT='
'
+ fi
- VOL_BLOCK_CONTENT=""
- vol_vars=$(grep '^VOL_' buildargs.env | grep -v '^#' | tr -d '\r' || true)
- if [ -n "$vol_vars" ]; then
- VOL_BLOCK_CONTENT=" volumes:\n"
- while read -r line; do
- [ -z "$line" ] && continue
- val=$(echo "$line" | cut -d= -f2-); VOL_BLOCK_CONTENT="${VOL_BLOCK_CONTENT} - ${val}\n"
- done <<< "$vol_vars"
- fi
+ if ! command -v python3 &> /dev/null; then
+ echo "📦 python3 fehlt und wird installiert..."
+ (apt-get update && apt-get install -y python3) || (apk add --no-cache python3) || true
+ fi
- {
- echo "docker run -d \\"
- echo " --name $REPO_PURE \\"
- echo " --restart unless-stopped \\"
-
- all_params=$(grep -E '^(PORT_|ENV_|VOL_)' buildargs.env | grep -v '^#' | sed 's/\r$//' || true)
- if [ -n "$all_params" ]; then
- while read -r line; do
- [ -z "$line" ] && continue
- if [[ "$line" =~ ^PORT_ ]]; then
- val=$(echo "$line" | cut -d= -f2-)
- echo " -p ${val} \\"
- elif [[ "$line" =~ ^ENV_ ]]; then
- key=$(echo "$line" | cut -d= -f1); clean_key=${key#ENV_}; val=$(echo "$line" | cut -d= -f2-)
- echo " -e ${clean_key}=${val} \\"
- elif [[ "$line" =~ ^VOL_ ]]; then
- val=$(echo "$line" | cut -d= -f2-)
- echo " -v ${val} \\"
- fi
- done <<< "$all_params"
- fi
- echo " $FULL_URL:$BUILD_TAG"
- } > docker_run_block.txt
-
- DOCKERHUB_LINK_CONTENT=""
- if [[ "${{ steps.prep.outputs.push_targets }}" == *"dockerhub"* ]]; then
- DH_USER="${{ secrets.DOCKERHUB_USERNAME }}"
- DOCKERHUB_LINK_CONTENT='
'
- fi
-
- if ! command -v python3 &> /dev/null; then
- echo "📦 python3 fehlt und wird installiert..."
- (apt-get update && apt-get install -y python3) || (apk add --no-cache python3) || true
- fi
-
- process_template() {
+ process_template() {
local template=$1; local output=$2
[ ! -f "$template" ] && return
cp "$template" "$output"
@@ -347,48 +337,48 @@ jobs:
PORTS_BLOCK_CONTENT VOL_BLOCK_CONTENT DESCRIPTION
python3 -c '
- import os, sys
+import os, sys
- output = sys.argv[1]
+output = sys.argv[1]
- with open(output, "r", encoding="utf-8") as f:
- content = f.read()
-
- content = content.replace("__REPO_NAME__", os.environ.get("REPO_PURE", ""))
- content = content.replace("__FULL_URL__", os.environ.get("FULL_URL", ""))
- content = content.replace("__BUILD_TAG__", os.environ.get("BUILD_TAG", ""))
- content = content.replace("__BASE_IMAGE__", os.environ.get("BASE_IMAGE", ""))
- content = content.replace("__ARM_STATUS__", os.environ.get("ARM_STATUS", ""))
- content = content.replace("__CURRENT_DATE__", os.environ.get("CURRENT_TIME", ""))
- content = content.replace("__HISTORY_CONTENT__", os.environ.get("HISTORY_CONTENT", ""))
- content = content.replace("__DOCKERHUB_LINK__", os.environ.get("DOCKERHUB_LINK_CONTENT", ""))
- content = content.replace("__ENV_BLOCK__", os.environ.get("ENV_BLOCK_CONTENT", "").replace("\\n", "\n"))
- content = content.replace("__PORTS_BLOCK__", os.environ.get("PORTS_BLOCK_CONTENT", "").replace("\\n", "\n"))
- content = content.replace("__VOL_BLOCK__", os.environ.get("VOL_BLOCK_CONTENT", "").replace("\\n", "\n"))
- content = content.replace("__DESCRIPTION__", os.environ.get("DESCRIPTION", "Keine Beschreibung."))
-
- if "__DOCKER_RUN__" in content and os.path.exists("docker_run_block.txt"):
- with open("docker_run_block.txt", "r", encoding="utf-8") as f:
- content = content.replace("__DOCKER_RUN__", f.read())
-
- if "__COMPOSE_BLOCK__" in content and os.path.exists("docker-compose.yml"):
- with open("docker-compose.yml", "r", encoding="utf-8") as f:
- content = content.replace("__COMPOSE_BLOCK__", f.read())
-
- with open(output, "w", encoding="utf-8") as f:
- f.write(content)
- ' "$output"
- }
+with open(output, "r", encoding="utf-8") as f:
+ content = f.read()
- process_template "docker-compose.template" "docker-compose.yml"
- process_template "README.template" "README.md"
-
- echo "FINAL_MSG=$COMMIT_MSG" >> $GITHUB_ENV
- {
- echo "DESCRIPTION<> $GITHUB_ENV
+content = content.replace("__REPO_NAME__", os.environ.get("REPO_PURE", ""))
+content = content.replace("__FULL_URL__", os.environ.get("FULL_URL", ""))
+content = content.replace("__BUILD_TAG__", os.environ.get("BUILD_TAG", ""))
+content = content.replace("__BASE_IMAGE__", os.environ.get("BASE_IMAGE", ""))
+content = content.replace("__ARM_STATUS__", os.environ.get("ARM_STATUS", ""))
+content = content.replace("__CURRENT_DATE__", os.environ.get("CURRENT_TIME", ""))
+content = content.replace("__HISTORY_CONTENT__", os.environ.get("HISTORY_CONTENT", ""))
+content = content.replace("__DOCKERHUB_LINK__", os.environ.get("DOCKERHUB_LINK_CONTENT", ""))
+content = content.replace("__ENV_BLOCK__", os.environ.get("ENV_BLOCK_CONTENT", "").replace("\\n", "\n"))
+content = content.replace("__PORTS_BLOCK__", os.environ.get("PORTS_BLOCK_CONTENT", "").replace("\\n", "\n"))
+content = content.replace("__VOL_BLOCK__", os.environ.get("VOL_BLOCK_CONTENT", "").replace("\\n", "\n"))
+content = content.replace("__DESCRIPTION__", os.environ.get("DESCRIPTION", "Keine Beschreibung."))
+
+if "__DOCKER_RUN__" in content and os.path.exists("docker_run_block.txt"):
+ with open("docker_run_block.txt", "r", encoding="utf-8") as f:
+ content = content.replace("__DOCKER_RUN__", f.read())
+
+if "__COMPOSE_BLOCK__" in content and os.path.exists("docker-compose.yml"):
+ with open("docker-compose.yml", "r", encoding="utf-8") as f:
+ content = content.replace("__COMPOSE_BLOCK__", f.read())
+
+with open(output, "w", encoding="utf-8") as f:
+ f.write(content)
+' "$output"
+ }
+
+ process_template "docker-compose.template" "docker-compose.yml"
+ process_template "README.template" "README.md"
+
+ echo "FINAL_MSG=$COMMIT_MSG" >> $GITHUB_ENV
+ {
+ echo "DESCRIPTION<> $GITHUB_ENV
- name: Push README to Docker Hub
if: steps.check_changes.outputs.should_build == 'true' && contains(steps.prep.outputs.push_targets, 'dockerhub')