Skip to content

Daily Seed Synchronization Check #139

Daily Seed Synchronization Check

Daily Seed Synchronization Check #139

Workflow file for this run

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: |
echo "Starting Mina Daemon"
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: Record Failing Seed
id: record-fail
if: ${{ failure() }}
run: |
echo "Update Failed Seed List"
echo "${{ matrix.seed }}" > failed-seeds-${{strategy.job-index}}.txt
- name: Upload failed seeds
if: ${{ failure() }}
uses: actions/[email protected]
with:
name: failed-seeds-${{strategy.job-index}}
path: failed-seeds-${{strategy.job-index}}.txt
retention-days: 1
print-failed-seeds:
needs: test-peer
runs-on: minafoundation-default-runners
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
pattern: "failed-seeds-*" # Use a wildcard to download all artifacts matching the pattern
- name: Echo Failed Seeds
run: |
cat failed-seeds-*/failed-seeds-*.txt > failed-seeds.txt
if [ ! -s failed-seeds.txt ]; then
exit 0
else
jq -n --arg message "Failed to synchronize with Mina Daemon using seed peer:" \
--argjson seeds "$(cat failed-seeds.txt | jq -R . | jq -s .)" \
'{text: ($message + "\n\n" + ($seeds | map("• " + .) | join("\n")))}' > payload-slack-content.json
fi
- name: Post to a Slack channel
id: slack
uses: slackapi/[email protected]
with:
channel-id: "mf-alerts-info"
payload-file-path: "./payload-slack-content.json"
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}