name: Mirror to Public Gitea (updates.rhino.nrw) # 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] jobs: mirror: runs-on: ubuntu-latest steps: - name: Checkout (full history) uses: actions/checkout@v4 with: fetch-depth: 0 - 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: | 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