From 64d30948b0a75bd8a6c966cab5c07014dce39df5 Mon Sep 17 00:00:00 2001 From: Rhino <1+rhino@noreply.gitea.rhino.nrw> Date: Sat, 20 Jun 2026 21:38:31 +0200 Subject: [PATCH] fix: CHECKSUMS am Release erzeugen + Auth via Header --- .gitea/workflows/mirror-to-public.yml | 36 ++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/.gitea/workflows/mirror-to-public.yml b/.gitea/workflows/mirror-to-public.yml index de0f273..0b3939e 100644 --- a/.gitea/workflows/mirror-to-public.yml +++ b/.gitea/workflows/mirror-to-public.yml @@ -1,8 +1,8 @@ name: Mirror to Public Gitea (updates.rhino.nrw) -# Trigger: Nur wenn explizit auf den 'release'-Branch gepusht wird. -# Das stellt sicher, dass nur geprüfte, validierte Stände ausgeliefert werden. -# Workflow auf main: git push origin main:release +# Trigger: nur Push auf 'release'. Das ist die Validierungsschranke — nur +# geprüfte, freigegebene Stände werden öffentlich ausgeliefert. +# Publish-Befehl (Entwickler): git push origin main:release --force on: push: branches: [release] @@ -16,7 +16,31 @@ jobs: with: fetch-depth: 0 - - name: Push mirror to Public Gitea (als 'main') + - name: CHECKSUMS.txt pro Projekt frisch erzeugen + # Am Publish-Zeitpunkt erzeugt → kann nie veralten und ein gültiges + # Update nie fälschlich blocken. Schützt gegen Download-Korruption + # (nicht gegen manipulierte Releases — das leistet die release-Schranke). run: | - git remote add public "http://rhino:${{ secrets.PUBLIC_GITEA_TOKEN }}@172.30.0.4:3053/rhino/StatusQuo_Updates.git" - git push public HEAD:main --force + for d in */ ; do + d="${d%/}" + if ls "$d"/sync-bundle-*.txt >/dev/null 2>&1; then + ( cd "$d" && sha256sum sync-bundle-*.txt sync-entpacken.bat 2>/dev/null > CHECKSUMS.txt ) + echo "CHECKSUMS.txt erzeugt für $d" + fi + done + + - name: Commit (nur lokal im Runner, fließt in den public-Mirror) + run: | + git config user.email "action@gitea.rhino.nrw" + git config user.name "Gitea Action" + git add -A + git commit -m "ci: CHECKSUMS.txt am Release erzeugt" || echo "Keine Änderung." + + - name: Push mirror to Public Gitea (als 'main') + env: + PUBLIC_GITEA_TOKEN: ${{ secrets.PUBLIC_GITEA_TOKEN }} + run: | + # Token nicht in der Remote-URL ablegen — via Authorization-Header. + AUTH=$(printf 'rhino:%s' "$PUBLIC_GITEA_TOKEN" | base64 | tr -d '\n') + git -c http.extraHeader="Authorization: Basic $AUTH" \ + push http://172.30.0.4:3053/rhino/StatusQuo_Updates.git HEAD:main --force