feat: migrate CI to arbitrum-testnode composite action#683
Open
feat: migrate CI to arbitrum-testnode composite action#683
Conversation
Replace `OffchainLabs/actions/run-nitro-test-node@feat-simplify` with the new `OffchainLabs/arbitrum-testnode@v0.2.0` composite action which boots from pre-built Docker snapshots (~10s vs ~12min). - Rewrite `getInformationFromTestnode()` to read config from filesystem via ARBITRUM_TESTNODE_CONFIG_DIR env var, with docker exec fallback for local dev - Handle config file renames (l2-nodeConfig.json, l3-nodeConfig.json) and batch poster private-key→address derivation - Update workflow matrix to use structured action inputs (version, l3-node, fee-token-decimals, nitro-contracts-version)
- Add github-token to arbitrum-testnode action so ghcr.io image pulls are authenticated in CI - Allowlist 6 new GHSA advisories in audit-ci.jsonc that are all transitive dev-only dependencies (flatted, picomatch, brace-expansion, yaml) with no runtime exposure
- Use dynamic upgrade executor address from testnode config instead of hardcoded value that doesn't match new testnode deployments - Update expected initial validator count to 11 for all contract versions (testnode v0.2.0 creates 11 validators regardless of nitro-contracts version)
The testnode v0.2.0 deploys a fresh RollupCreator via createChain(), so the hardcoded addresses no longer match. Thread rollupCreatorAddressOverride through createRollup() and read the address from testnode config, with runtime discovery fallback via RollupCreated event logs for older images that don't export it.
Allow all matrix jobs to complete so we can see which contract versions pass independently.
Bumps vitest's transitive vite dependency from 7.3.1 to 7.3.2, fixing GHSA-4w7w-66w2-5vf9, GHSA-p9ff-h696-f583, GHSA-v2wj-q39q-566r.
v0.2.2 uses pre-built GHCR runtime images, avoiding the Docker build step that was failing due to transient apt-get failures.
The v0.2.2 testnode deploys RollupCreator at a different address than previous versions. The stale hardcoded addresses caused createRollupGetRetryablesFees to fail (calling a non-existent contract), which made the createRollup transaction revert.
Switch from arbitrum-testnode@v0.2.2 (pre-built snapshots) to OffchainLabs/actions/run-nitro-test-node@feat-simplify which builds from source and produces stable contract addresses. Revert hardcoded RollupCreator addresses, remove the discoverRollupCreatorAddress workaround and rollupCreatorAddressOverride plumbing that are no longer needed.
v2.1 creates 10 initial validators while v3.2 creates 11. Use INTEGRATION_TEST_NITRO_CONTRACTS_BRANCH env var to set the expected count. Also hardcode the L3 upgrade executor address and restore fail-fast: false.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
OffchainLabs/actions/run-nitro-test-node@feat-simplifywithOffchainLabs/arbitrum-testnode@v0.2.0(snapshot-based, ~10s boot vs ~12min)getInformationFromTestnode()to read config from filesystem (ARBITRUM_TESTNODE_CONFIG_DIR) with docker exec fallback for local devl2-nodeConfig.json,l3-nodeConfig.json) and batch posterprivate-key→ address derivation{v2.1, v3.2} × {6, 18}using structured action inputsDepends on
nitro-contracts-versioninput)nctag formatTest plan
pnpm buildpassespnpm lintpassespnpm test:unit— 38 files, 193 tests passpnpm test:type— 2 files, 9 tests pass