diff --git a/.gitea/workflows/github_mirror.yaml b/.gitea/workflows/github_mirror.yaml new file mode 100644 index 0000000..549d43a --- /dev/null +++ b/.gitea/workflows/github_mirror.yaml @@ -0,0 +1,56 @@ +name: Mirror main to GitHub (shallow) + +on: + push: + branches: ["main"] # nur main triggern + workflow_dispatch: # manuell startbar + +concurrency: + group: mirror-main-to-github + cancel-in-progress: false + +jobs: + mirror: + runs-on: ubuntu-latest + steps: + + - name: Checkout (shallow, no history) + uses: actions/checkout@v4 + with: + fetch-depth: 1 # <— wichtig: keine alte Historie + lfs: true # falls LFS-Dateien im aktuellen Commit liegen + + - name: Install git-lfs + run: | + sudo apt-get update + sudo apt-get install -y git-lfs + git lfs install + + - name: Add GitHub remote + env: + GH_USER: ${{ secrets.GH_USER }} + GH_TOKEN: ${{ secrets.GH_TOKEN }} + GH_OWNER: ${{ secrets.GH_OWNER }} + GH_REPO: ${{ secrets.GH_REPO }} + run: | + set -euo pipefail + : "${GH_USER?missing}"; : "${GH_TOKEN?missing}"; : "${GH_OWNER?missing}"; : "${GH_REPO?missing}" + git remote remove mirror 2>/dev/null || true + git remote add mirror "https://${GH_USER}:${GH_TOKEN}@github.com/${GH_OWNER}/${GH_REPO}.git" + + - name: Push main branch (shallow) + run: | + # force ist i. d. R. nicht nötig; nur, wenn du auf GitHub main überschreiben willst + git push mirror HEAD:refs/heads/main + + - name: Push LFS objects for current commit + env: + GH_USER: ${{ secrets.GH_USER }} + GH_TOKEN: ${{ secrets.GH_TOKEN }} + GH_OWNER: ${{ secrets.GH_OWNER }} + GH_REPO: ${{ secrets.GH_REPO }} + run: | + set -euo pipefail + REMOTE="https://${GH_USER}:${GH_TOKEN}@github.com/${GH_OWNER}/${GH_REPO}.git" + # Nur Objekte, die lokal vorhanden sind (durch lfs: true) – somit kein Altbestand + git lfs push "$REMOTE" --all