/ .forgejo / workflows / ci.yml.bak
ci.yml.bak
 1  name: Scanner CI
 2  on: [push, pull_request]
 3  jobs:
 4    build:
 5      runs-on: native
 6      steps:
 7        - uses: actions/checkout@v4
 8        - uses: actions/setup-node@v4
 9          with:
10            node-version: '20'
11        - run: yarn install --frozen-lockfile
12        - run: yarn lint
13        - run: yarn typecheck
14        - run: yarn build
15  
16    radicle-sync:
17      name: Radicle Sync
18      runs-on: native
19      if: github.ref == 'refs/heads/main' && github.event_name == 'push'
20      steps:
21        - name: Checkout from Forgejo
22          uses: actions/checkout@v4
23          with:
24            fetch-depth: 0
25            path: forgejo-src
26  
27        - name: Sync to Radicle
28          run: |
29            set -e
30            export PATH=$HOME/.radicle/bin:$PATH
31            RID="rad:z3RrkK68h6W9H7dGrjNfqeCBvpfpG"
32  
33            rm -rf radicle-repo
34            NODE_ID=$(rad self --nid 2>/dev/null || rad self | grep -oP 'Node ID \(NID\): \K[a-z0-9]+')
35            echo "Local node ID: $NODE_ID"
36  
37            if ! rad clone "$RID" radicle-repo 2>&1; then
38              echo "rad clone failed, initializing from Forgejo source"
39              rm -rf radicle-repo
40              mkdir -p radicle-repo
41              cd radicle-repo
42              git init
43              git remote add rad "rad://${RID#rad:}/$NODE_ID"
44              git remote add forgejo ../forgejo-src
45              git fetch forgejo main
46              git checkout -b main forgejo/main
47              git push rad main
48              echo "Radicle sync complete (initialized)"
49              exit 0
50            fi
51  
52            cd radicle-repo
53            git remote add forgejo ../forgejo-src 2>/dev/null || git remote set-url forgejo ../forgejo-src
54            git fetch forgejo main
55            git checkout main 2>/dev/null || git checkout -b main
56  
57            if ! git merge --ff-only forgejo/main 2>/dev/null; then
58              echo "Fast-forward failed, forcing sync to Forgejo state"
59              git reset --hard forgejo/main
60            fi
61  
62            EXPECTED_COMMIT=$(git rev-parse HEAD)
63            echo "Expected commit: $EXPECTED_COMMIT"
64  
65            git push rad main || echo "Push command returned error (may be broken pipe)"
66  
67            sleep 2
68            RADICLE_HEAD=$(git -C ~/.radicle/storage/${RID#rad:} rev-parse --short=7 HEAD 2>/dev/null)
69            if [ "${EXPECTED_COMMIT:0:7}" = "$RADICLE_HEAD" ]; then
70              echo "Radicle sync verified: $RADICLE_HEAD"
71            else
72              echo "ERROR: Radicle sync verification failed"
73              echo "Expected: ${EXPECTED_COMMIT:0:7}, Got: $RADICLE_HEAD"
74              exit 1
75            fi