Q&A: Phase 8.5 — Sepolia CI configuration and deployment questions #297
Unanswered
web3guru888
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Phase 8.5 — Sepolia CI: Q&A
Common configuration and deployment questions for Phase 8.5 (Sepolia CI pipeline, bridge health monitoring, and on-chain fuzz testing).
Q1: Which secrets does the
sepolia.ymlworkflow need, and how are they scoped?Three secrets are required:
SEPOLIA_RPCdeploy-contracts,bridge-health, exporterDEPLOYER_PKdeploy-contractsonlybridge-health)GH_BOT_TOKENupdate-config(commitssepolia.json)contents: writeDEPLOYER_PKis only injected into thedeploy-contractsjob — the smoke test job receivesconfig/sepolia.jsonas an artifact, not the private key.Q2: How much Sepolia ETH does the deployer account need?
Rough estimates based on Sepolia gas prices (~20 gwei):
Sepolia ETH is free from the Alchemy or Infura faucets. Keep at least 0.1 ETH in the deployer account.
Q3: How do I tune the fuzz test run count?
The default is
--fuzz-runs 1000(about 30 s onubuntu-latest). Adjust infoundry.toml:For nightly / release runs, increase to
--fuzz-runs 10000by passing the flag explicitly:Monitor CI runtime — if fuzz jobs exceed 10 min, reduce
runsor split into separate test files.Q4: How does
extract_addresses.pyhandle partial redeployments?If only one contract is redeployed (e.g.,
RingsBridgeis upgraded butBridgedTokenstays),extract_addresses.pyreads only the new broadcast files. To avoid wiping existing addresses, it merges with the existingconfig/sepolia.json:This preserves contract addresses for contracts not redeployed in this run.
Q5: What happens when the Sepolia RPC is rate-limited during CI?
bridge_smoke_test.pyuses exponential back-off with jitter:The exporter handles RPC timeouts by skipping the scrape cycle and incrementing an internal error counter (not exposed as a Prometheus metric — use
up{job="sepolia_bridge"}instead).Q6: How does the
SepoliaBridgeDepositStalledalert avoid false positives on testnets?Testnet traffic is sparse — no deposits for 30 min is normal during low-activity periods. Options:
for: 30mtofor: 6hunless on(instance) up{job="sepolia_bridge"} == 0warningchannel onlyDefault config routes
SepoliaBridgeDepositStalledtoseverity: warning(Slack/email, not PagerDuty).Q7: How do I run Phase 8.5 locally without spending Sepolia ETH?
Use Foundry's
anvilwith a Sepolia fork:The
anvilfork inherits all existing contract state from Sepolia, so you interact with the real deployed contracts without spending real (testnet) ETH —vm.dealfunds test accounts from nowhere.Beta Was this translation helpful? Give feedback.
All reactions