master
 1name: Mirror Repo to Tangled.org
 2on:
 3  workflow_dispatch:
 4  push:
 5    branches: [master]
 6concurrency:
 7  group: tangled-mirror
 8  cancel-in-progress: true
 9jobs:
10  tangled-mirror:
11    runs-on: ubuntu-latest
12    steps:
13      - uses: actions/checkout@v6
14        with:
15          fetch-depth: 0
16          persist-credentials: false
17      - name: Add Tangled Remote
18        env:
19          TANGLED_REPO_URL: git@tangled.org:karnwong.me/${{ github.event.repository.name }}
20        run: git remote add tangled $TANGLED_REPO_URL
21      - name: Decode SSH key
22        env:
23          TANGLED_SSH_KEY: ${{ secrets.TANGLED_SSH_KEY }}
24        run: |
25          echo $TANGLED_SSH_KEY | base64 --decode > "$RUNNER_TEMP/ssh.key"
26          chmod 600 "$RUNNER_TEMP/ssh.key"
27      - name: Setup SSH known_hosts
28        run: |
29          mkdir -p ~/.ssh
30          sudo ssh-keyscan -t rsa tangled.org >> ~/.ssh/known_hosts
31          sudo chmod 700 ~/.ssh
32          sudo chmod 644 ~/.ssh/known_hosts
33          sudo chown -R runner:runner ~/.ssh
34      - name: Push Repo to Mirror
35        run: |
36          eval `ssh-agent`
37          ssh-add "$RUNNER_TEMP/ssh.key"
38          git push --mirror --force tangled
39      - name: Cleanup
40        run: rm "$RUNNER_TEMP/ssh.key"