Skip to content

Commit 898a040

Browse files
committed
chore: validate network config json in CI
1 parent 0782c6b commit 898a040

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
name: Validate Network Config
2+
3+
on:
4+
pull_request:
5+
push:
6+
branches:
7+
- main
8+
9+
jobs:
10+
validate:
11+
name: Validate Configuration
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- name: Checkout repository
16+
uses: actions/checkout@v4
17+
18+
- name: Validate JSON syntax
19+
run: |
20+
echo "Validating network_config.json..."
21+
if jq empty network_config.json; then
22+
echo "JSON is valid"
23+
else
24+
echo "JSON validation failed"
25+
exit 1
26+
fi
27+
28+
- name: Validate configuration values
29+
run: |
30+
echo "Validating configuration values..."
31+
32+
ERRORS=0
33+
34+
# Get all network names
35+
NETWORKS=$(jq -r 'keys[]' network_config.json)
36+
37+
for NETWORK in $NETWORKS; do
38+
echo ""
39+
echo "Checking network: $NETWORK"
40+
41+
# Validate bootnodes start with 'enr:-'
42+
echo " - Validating bootnodes..."
43+
INVALID_BOOTNODES=$(jq -r --arg net "$NETWORK" '.[$net].bootnodes[]' network_config.json | grep -v '^enr:-' || true)
44+
if [ -n "$INVALID_BOOTNODES" ]; then
45+
echo " ERROR: Invalid bootnode(s) found (must start with 'enr:-'):"
46+
echo "$INVALID_BOOTNODES" | sed 's/^/ /'
47+
ERRORS=$((ERRORS + 1))
48+
else
49+
echo " OK: All bootnodes valid"
50+
fi
51+
52+
# Validate registryAddress
53+
echo " - Validating registryAddress..."
54+
REGISTRY_ADDR=$(jq -r --arg net "$NETWORK" '.[$net].registryAddress' network_config.json)
55+
if [ -z "$REGISTRY_ADDR" ]; then
56+
echo " ERROR: registryAddress is required and cannot be empty"
57+
ERRORS=$((ERRORS + 1))
58+
elif ! echo "$REGISTRY_ADDR" | grep -qE '^0x[0-9a-fA-F]{40}$'; then
59+
echo " ERROR: Invalid registryAddress: $REGISTRY_ADDR (must be 0x followed by 40 hex characters)"
60+
ERRORS=$((ERRORS + 1))
61+
else
62+
echo " OK: registryAddress is valid"
63+
fi
64+
65+
# Validate feeAssetHandlerAddress
66+
echo " - Validating feeAssetHandlerAddress..."
67+
FEE_ADDR=$(jq -r --arg net "$NETWORK" '.[$net].feeAssetHandlerAddress' network_config.json)
68+
if [ -n "$FEE_ADDR" ]; then
69+
if ! echo "$FEE_ADDR" | grep -qE '^0x[0-9a-fA-F]{40}$'; then
70+
echo " ERROR: Invalid feeAssetHandlerAddress: $FEE_ADDR (must be 0x followed by 40 hex characters or empty string)"
71+
ERRORS=$((ERRORS + 1))
72+
else
73+
echo " OK: feeAssetHandlerAddress is valid"
74+
fi
75+
else
76+
echo " OK: feeAssetHandlerAddress is empty"
77+
fi
78+
79+
# Validate l1ChainId is a number
80+
echo " - Validating l1ChainId..."
81+
L1_CHAIN_ID=$(jq -r --arg net "$NETWORK" '.[$net].l1ChainId' network_config.json)
82+
if ! echo "$L1_CHAIN_ID" | grep -qE '^[0-9]+$'; then
83+
echo " ERROR: Invalid l1ChainId: $L1_CHAIN_ID (must be a number)"
84+
ERRORS=$((ERRORS + 1))
85+
else
86+
echo " OK: l1ChainId is valid ($L1_CHAIN_ID)"
87+
fi
88+
done
89+
90+
echo ""
91+
if [ $ERRORS -gt 0 ]; then
92+
echo "Validation failed with $ERRORS error(s)"
93+
exit 1
94+
else
95+
echo "All validation checks passed!"
96+
fi

0 commit comments

Comments
 (0)