name: mirror on: workflow_dispatch: schedule: - cron: '@daily' jobs: mirror: if: ${{ secrets.MIRROR_TOKEN != '' }} runs-on: docker container: image: 'data.forgejo.org/oci/node:20-bookworm' steps: - name: git push {v*/,}forgejo run: | git init --bare . git remote add origin ${{ env.GITHUB_SERVER_URL }}/${{ env.GITHUB_REPOSITORY }} git fetch origin refs/heads/forgejo:refs/mirror/forgejo git ls-remote origin refs/heads/v*/forgejo | while read sha full_ref ; do ref=${full_ref#refs/heads/} echo git fetch origin $full_ref:refs/mirror/$ref git fetch origin $full_ref:refs/mirror/$ref done echo git push --force https://${{ vars.MIRROR_DESTINATION }} refs/mirror/*:refs/heads/* git push --force https://any:${{ secrets.MIRROR_TOKEN }}@${{ vars.MIRROR_DESTINATION }} refs/mirror/*:refs/heads/*