Skip to content

feat: migrate CI to arbitrum-testnode composite action#683

Open
douglance wants to merge 12 commits intomainfrom
dl/parallel
Open

feat: migrate CI to arbitrum-testnode composite action#683
douglance wants to merge 12 commits intomainfrom
dl/parallel

Conversation

@douglance
Copy link
Copy Markdown
Contributor

Summary

  • Replace OffchainLabs/actions/run-nitro-test-node@feat-simplify with OffchainLabs/arbitrum-testnode@v0.2.0 (snapshot-based, ~10s boot vs ~12min)
  • Rewrite getInformationFromTestnode() to read config from filesystem (ARBITRUM_TESTNODE_CONFIG_DIR) with docker exec fallback for local dev
  • Handle file renames (l2-nodeConfig.json, l3-nodeConfig.json) and batch poster private-key → address derivation
  • Workflow matrix preserved at 4 cells: {v2.1, v3.2} × {6, 18} using structured action inputs

Depends on

Test plan

  • pnpm build passes
  • pnpm lint passes
  • pnpm test:unit — 38 files, 193 tests pass
  • pnpm test:type — 2 files, 9 tests pass
  • Integration tests pass with published testnode images

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant