-
Notifications
You must be signed in to change notification settings - Fork 5
171 lines (164 loc) · 5.85 KB
/
ci.yml
File metadata and controls
171 lines (164 loc) · 5.85 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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
name: CI
on:
push:
pull_request:
schedule:
- cron: '0 0 * * 0'
jobs:
test:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
optimize: [Debug, ReleaseSmall, ReleaseSafe, ReleaseFast]
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Zig 0.15.1
uses: goto-bus-stop/setup-zig@v2
with:
version: 0.15.1
- name: Build
run: zig build -Doptimize=${{ matrix.optimize }}
- name: Debug - List target directory (Windows)
if: always() && runner.os == 'Windows'
shell: bash
run: |
echo "=== Listing target directory structure ==="
find target -name "*.a" -o -name "*.lib" 2>/dev/null | head -20 || echo "No .a or .lib files found"
echo ""
echo "=== Listing target/release ==="
ls -la target/release/ 2>/dev/null || echo "target/release/ does not exist"
echo ""
echo "=== Listing all target subdirectories ==="
find target -type d -maxdepth 2 2>/dev/null || echo "target/ does not exist"
echo ""
echo "=== Listing files in target root ==="
ls -la target/ 2>/dev/null || echo "target/ does not exist"
- name: Test
run: zig build test -Doptimize=${{ matrix.optimize }}
examples:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Zig 0.15.1
uses: goto-bus-stop/setup-zig@v2
with:
version: 0.15.1
- name: Build keccak256 example
run: zig build example-keccak256
- name: Build ABI example
run: zig build example-abi
# secp256k1 example disabled: signature verification fails on Linux CI
# See: unaudited_signHash recovery verification issue on ubuntu-latest
# - name: Build secp256k1 example
# run: zig build example-secp256k1
- name: Build address example
run: zig build example-address
- name: Build hex example
run: zig build example-hex
- name: Build RLP example
run: zig build example-rlp
# EIP-712 example disabled: signature verification fails on Linux CI (same issue as secp256k1)
# - name: Build EIP-712 example
# run: zig build example-eip712
# Transaction example disabled: signature verification fails on Linux CI (same issue as secp256k1)
# - name: Build transaction example
# run: zig build example-transaction
# C API example disabled until libwally-core dependency is fixed
# - name: Build C API example
# run: zig build example-c
wasm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Zig 0.15.1
uses: goto-bus-stop/setup-zig@v2
with:
version: 0.15.1
- name: Build for WASM
run: zig build -Dtarget=wasm32-wasi -Doptimize=ReleaseSmall
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Zig 0.15.1
uses: goto-bus-stop/setup-zig@v2
with:
version: 0.15.1
- name: Check formatting
run: zig fmt --check build.zig packages/voltaire-zig/src packages/voltaire-zig/lib packages/voltaire-zig/examples
typescript:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Zig 0.15.1
uses: goto-bus-stop/setup-zig@v2
with:
version: 0.15.1
- name: Build Zig library (required for FFI tests)
run: zig build -Doptimize=ReleaseFast -Dwith-c-api=false
- name: Install Rust wasm32 target
run: rustup target add wasm32-unknown-unknown
- name: Build WASM for TypeScript tests
run: |
zig build build-ts-wasm
zig build crypto-wasm
- name: Build fast WASM variant
run: zig build build-ts-wasm-fast
- name: Install pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- name: Install TypeScript dependencies
run: pnpm install --frozen-lockfile
- name: Run typecheck
run: pnpm --filter @tevm/voltaire --filter @tevm/playground run typecheck
- name: Run lint check
run: pnpm -r run lint:check
- name: Run format check
run: pnpm -r run format:check
# Dependency check disabled: false positives for bun/vite/typedoc plugins
# - name: Run dependency check
# run: pnpm run lint:deps
- name: Build distribution
run: pnpm --filter @tevm/voltaire run build:dist
- name: Build types
run: pnpm --filter @tevm/voltaire run build:types
- name: Run package validation
run: pnpm --filter @tevm/voltaire run lint:package
- name: Run TypeScript tests with coverage
run: pnpm --filter @tevm/voltaire run test:coverage
# Native FFI tests disabled until libwally-core C API is fixed
# - name: Run native FFI tests
# run: pnpm run test:native
- name: Run WASM tests
run: pnpm --filter @tevm/voltaire run test:wasm
# Benchmarks disabled - keccak_wrapper.h include path issue needs fix in build.zig
# benchmarks:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: recursive
# - name: Install Zig 0.15.1
# uses: goto-bus-stop/setup-zig@v2
# with:
# version: 0.15.1
# - name: Clean Rust build cache (for panic=abort)
# run: cargo clean
# - name: Compile benchmarks (catch API regressions)
# run: zig build -Dwith-benches=true --summary failures