Skip to content

Commit

Permalink
Merge pull request #14 from MinaFoundation/PM-1764-create-daily-seed-…
Browse files Browse the repository at this point in the history
…synchronisation-check

PM-1764 - Add daily Seed Synchronisation Check
  • Loading branch information
kaozenn authored Jun 19, 2024
2 parents 2321601 + 9ad0c6a commit 2f06b0d
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 0 deletions.
52 changes: 52 additions & 0 deletions .github/workflows/sync-check.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Daily Seed Synchronization Check
on:
workflow_dispatch:
schedule:
- cron: "0 0 * * 1,4" # At 00:00 on Monday, and Thursday
concurrency:
group: "${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}"
cancel-in-progress: true
jobs:
parse-mainnet-seed-list:
runs-on: minafoundation-default-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
test-peer:
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 != ''
continue-on-error: true
strategy:
matrix:
seed: ${{ fromJson(needs.parse-mainnet-seed-list.outputs.seeds) }}
steps:
- name: 📥 Checkout
uses: actions/[email protected]
- name: Start Mina Daemon
run: |
docker run -d --restart always --name mina \
--entrypoint="" \
minaprotocol/mina-daemon:3.0.0-93e0279-bullseye-mainnet \
mina daemon \
--peer ${{ matrix.seed }}
- name: Wait for Daemon to Sync
id: wait-for-sync
run: ./scripts/mina-sync-monitor.sh
- name: Post to a Slack channel
id: slack
if: ${{ failure() }}
uses: slackapi/[email protected]
with:
channel-id: "mf-alerts-info"
slack-message: "Failed to synchronize with Mina Daemon using seed peer:\n *_${{ matrix.seed }}_*"
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
27 changes: 27 additions & 0 deletions scripts/mina-sync-monitor.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/usr/bin/env bash
set -e
max_attempts=24
attempt=0
sleep_duration=300
status="Null"

check_sync_status() {
status=$(docker exec mina mina client status --json | jq -r .sync_status || echo "Null")
echo "Current sync status: $status"
}

# 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 daemon is not synced. Attempt $attempt/$max_attempts."
sleep $sleep_duration
done

exit 1

0 comments on commit 2f06b0d

Please sign in to comment.