Skip to content

Automated Snapshot Creation & README Update #56

@curryxbo

Description

@curryxbo

Summary

Add a server-side automation system for creating chain data snapshots, uploading to S3, and updating the README snapshot table via GitHub PR.

Components

  • snapshot_make.py — main entry point, runs via PM2 cron on the 1st and 15th of each month
  • update_metadata.py — fetches indexer metadata and creates a GitHub PR to update the README table via GitHub REST API (no git/gh CLI required)
  • update_readme.py — in-memory README table insertion logic
  • metrics_server.py — Prometheus metrics HTTP server for alerting integration
  • snapshot.env.example — per-environment configuration template
  • ecosystem.config.js.example — PM2 process config template

Workflow

  1. Resolve snapshot name (check GitHub for branch conflicts)
  2. Stop morph-geth and morph-node
  3. Copy chain data → compress → upload to S3
  4. Restart services, collect base_height via geth RPC
  5. Query explorer-indexer API for l1_msg_start_height and derivation_start_height
  6. Push README update to a new branch and open a PR

Key Design Decisions

  • All GitHub operations use REST API directly — no git or gh CLI dependency
  • Snapshot name, S3 key, and branch name are resolved together before any destructive operation to prevent conflicts
  • All temp files are scoped under SNAPSHOT_WORK_DIR (cleared after upload)
  • Python 3.7 compatible
  • Supports multiple environments (mainnet / hoodi / holesky) and snapshot types (snapshot / mpt-snapshot) via env config

Metadata

Metadata

Assignees

Labels

No labels
No labels
No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions