-
Notifications
You must be signed in to change notification settings - Fork 9
156 lines (126 loc) · 4.55 KB
/
Copy pathe2e.yml
File metadata and controls
156 lines (126 loc) · 4.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
name: Devkit E2E Test
on:
push:
branches: [main]
pull_request:
branches: ["**"]
permissions:
contents: read
env:
FOUNDRY_PROFILE: ci
L1_FORK_URL: ${{ secrets.L1_FORK_URL }}
L2_FORK_URL: ${{ secrets.L2_FORK_URL }}
jobs:
e2e:
runs-on: ubuntu-latest
if: github.event.pull_request.head.repo.full_name == github.repository
steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
submodules: recursive
- name: Set up Go
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
with:
go-version: "1.24"
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@82dee4ba654bd2146511f85f0d013af94670c4de # v1.4.0
with:
version: stable
- name: Install devkit CLI
run: make install
- name: Add ~/bin to PATH
run: echo "$HOME/bin" >> $GITHUB_PATH
- name: Run devkit avs create
run: devkit avs create my-awesome-avs
- name: Verify AVS project created
run: |
if [ ! -f "./my-awesome-avs/config/config.yaml" ]; then
echo "❌ AVS project config/config.yaml not found!"
exit 1
fi
echo "✅ AVS project created successfully at ${GITHUB_WORKSPACE}/my-awesome-avs/"
- name: Run devkit avs build
env:
DOCKER_BUILDKIT: 1
run: |
cd ./my-awesome-avs/
devkit avs build
- name: Run devkit avs test
run: |
cd ./my-awesome-avs/
devkit avs test
- name: Start devnet
run: |
cd ./my-awesome-avs/
devkit avs devnet start &
# wait until executor and aggregator are available
until nc -z localhost 9090 && nc -z localhost 8081; do
sleep 1
done
- name: Check devnet RPC is live
run: |
for i in {1..10}; do
bn=$(cast block-number --rpc-url http://localhost:8545 || echo "error")
if [ "$bn" != "error" ]; then
echo "Current block number: $bn"
exit 0
fi
echo "Waiting for devnet... retrying in 2s"
sleep 2
done
echo "❌ Devnet failed to start"
exit 1
- name: Call AVS and assert result is produced
shell: bash
run: |
set -euo pipefail
cd ./my-awesome-avs/
# Stream stderr to log and capture to file
devkit avs call -- signature="(uint256,string)" args='(5,"hello")' \
1>/dev/null 2> >(tee call_stderr.log >&2) || true
# Optional: normalize by stripping ANSI control codes
sed -E 's/\x1B\[[0-9;]*[A-Za-z]//g' call_stderr.log > call_stderr.clean
LOG="call_stderr.clean"
# Fail fast on explicit timeout
if grep -q "Timeout: TaskVerified() not seen" "$LOG"; then
echo "❌ Timeout waiting for TaskVerified()"
tail -n 200 "$LOG" || true
exit 1
fi
# Ensure success marker is present
if ! grep -q "TaskVerified event received:" "$LOG"; then
echo "❌ No 'TaskVerified event received' marker found"
tail -n 200 "$LOG" || true
exit 1
fi
# Extract result bytes: " - result: 0x..."
RESULT_BYTES="$(grep -m1 -E '^[[:space:]-]*TaskResult:' "$LOG" | sed 's/.*TaskResult:\s*//')"
# Validate non-empty hex payload
if [[ -z "${RESULT_BYTES}" ]] || ! [[ "${RESULT_BYTES}" =~ ^0x[0-9a-fA-F]*$ ]]; then
echo "❌ Invalid or empty result bytes: '${RESULT_BYTES:-<empty>}'"
tail -n 200 "$LOG" || true
exit 1
fi
echo "✅ Result received: ${RESULT_BYTES}"
- name: Verify stake table roots
run: |
cd ./my-awesome-avs/
devkit avs transport verify
- name: Set release metadata URI
run: |
cd ./my-awesome-avs/
# Set URI for operator set 0
devkit avs release uri \
--metadata-uri "https://github.com/example/metadata-0.json" \
--operator-set-id 0
echo "✅ Set metadata URI for operator set 0"
# Set URI for operator set 1
devkit avs release uri \
--metadata-uri "https://github.com/example/metadata-1.json" \
--operator-set-id 1
echo "✅ Set metadata URI for operator set 1"
- name: Stop devnet
run: |
cd ./my-awesome-avs/
devkit avs devnet stop