-
Notifications
You must be signed in to change notification settings - Fork 3
56 lines (54 loc) · 2.02 KB
/
sync-check.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
name: Daily Seed Synchronization Check
on:
push:
branches: [PM-1764-create-daily-seed-synchronisation-check]
jobs:
parse-mainnet-seed-list:
runs-on: minafoundation-xlarge-runners
outputs:
seeds: ${{ steps.parse-mainnet-seed-list.outputs.seeds }}
steps:
- name: 📥 Checkout
uses: actions/[email protected]
- name: Parse Mainnet Seed List
id: parse-mainnet-seed-list
run: |
echo "Parsing Mainnet Seed List"
seeds=$(cat networks/mainnet.txt | jq -R -s -c 'split("\n") | map(select(. != ""))')
echo "seeds=$seeds" >> $GITHUB_OUTPUT
check-synchronization:
needs: parse-mainnet-seed-list
runs-on: minafoundation-xlarge-runners
if: needs.parse-mainnet-seed-list.outputs.seeds != '[]' && needs.parse-mainnet-seed-list.outputs.seeds != ''
strategy:
matrix:
seed: ${{ fromJson(needs.parse-mainnet-seed-list.outputs.seeds) }}
steps:
- name: Start Mina Daemon
run: |
docker run --rm -d --restart on-failure[5] a--name mina \
minaprotocol/mina-daemon:3.0.0-93e0279-bullseye-mainnet \
mina daemon \
--peer ${{ matrix.seed }}
- name: Wait for Daemon to Sync
run: |
check_sync_status() {
status=$(docker exec mina mina client status --json | jq -r .sync_status)
echo "Current sync status: $status"
}
# Number of attempts (12 attempts, 5 minutes apart, equals 1 hour)
max_attempts=12
attempt=0
# Loop to check sync status
while [ $attempt -lt $max_attempts ]; do
check_sync_status
if [ "$status" == "Synced" ]; then
echo "Mina client is synced."
exit 0
fi
attempt=$((attempt + 1))
echo "Mina client is not synced. Attempt $attempt/$max_attempts."
sleep 300 # Sleep for 5 minutes
done
echo "Mina client failed to sync within 1 hour."
exit 1