3131 runs-on : " ubuntu-latest"
3232 name : Native addon ABI compatibility
3333 env :
34- # The flags the runner passes in a real benchmark process.
34+ # The flags the runner passes in a real benchmark process. They cannot go
35+ # through NODE_OPTIONS (--allow-natives-syntax is rejected there), so jest
36+ # runs in-band under a flagged node instead of forking workers.
3537 NODE_OPTS : " --interpreted-frames-native-stack --allow-natives-syntax"
3638 steps :
3739 - uses : " actions/checkout@v4"
@@ -48,19 +50,22 @@ jobs:
4850 with :
4951 key-suffix : native-abi
5052 - run : pnpm install --frozen-lockfile --prefer-offline
51- # One prebuild set, built once, then loaded by every supported Node
52- # major. The other jobs compile the addon with the same Node they run it
53- # under, so they cannot see an ABI mismatch.
53+ # Build one prebuild set, then load it without rebuilding under each
54+ # runtime via the jest integ test. The other jobs compile the addon
55+ # with the Node version that loads it, so they cannot detect an ABI
56+ # mismatch.
5457 - run : pnpm turbo run build --filter=@codspeed/core
5558
5659 - uses : actions/setup-node@v6
5760 with :
5861 node-version : " 22"
59- - run : node ${{ env.NODE_OPTS }} scripts/assert-native-binding.cjs
62+ - run : node ${{ env.NODE_OPTS }} "$(node -p 'require.resolve("jest/bin/jest")')" -c jest.config.integ.js --runInBand tests/index.integ.test.ts
63+ working-directory : packages/core
6064 - uses : actions/setup-node@v6
6165 with :
6266 node-version : " 24"
63- - run : node ${{ env.NODE_OPTS }} scripts/assert-native-binding.cjs
67+ - run : node ${{ env.NODE_OPTS }} "$(node -p 'require.resolve("jest/bin/jest")')" -c jest.config.integ.js --runInBand tests/index.integ.test.ts
68+ working-directory : packages/core
6469
6570 list-examples :
6671 runs-on : " ubuntu-latest"
0 commit comments