Skip to content

ci: remove borales and BerniWittmann third-party actions#133

Merged
mattgle merged 2 commits into
mainfrom
ci/remove-third-party-actions
May 12, 2026
Merged

ci: remove borales and BerniWittmann third-party actions#133
mattgle merged 2 commits into
mainfrom
ci/remove-third-party-actions

Conversation

@mattgle
Copy link
Copy Markdown
Contributor

@mattgle mattgle commented May 11, 2026

What

Removes every non-actions/* action from .github/workflows/:

  • borales/actions-yarn in publish-npmjs.yml, unit-tests-V2.yml, unit-tests-V3.yml, integration-tests-V2.yml, integration-tests-V3.ymlcorepack enable + yarn install --frozen-lockfile, with setup-node's built-in yarn cache where there's a workspace-root lockfile.
  • BerniWittmann/background-server-action in integration-tests-V2.yml and integration-tests-V3.yml → an explicit background shell pattern that mirrors the action's three behaviours: start the Hardhat node in the background, poll http://localhost:8545 over JSON-RPC until it responds (replacing the action's wait-on), run the deploy + test steps, then kill the recorded PID in an if: always() cleanup step so the node never leaks past the job.

Drops cache: 'yarn' from setup-node in the two integration workflows: engine and contract are checked out into ./engine/ and ./contract/ subdirectories, so the workspace root has no yarn.lock for setup-node to hash a cache key from.

Why

Every workflow in this repo either runs with the npm OIDC publish token in scope or checks out the private Railgun-Privacy/contract repo for integration tests. Each third-party action layered into those workflows is a separate item on our supply-chain attack surface. The corepack replacement pins the yarn version (via packageManager in package.json) more strictly than the previous action did. The hardhat-server replacement makes startup-wait and teardown explicit instead of relying on an unmaintained third-party wrapper.

CI note

🧪 Integration Tests includes a perf benchmark (WASM should be 5x-10x faster than JavaScript in keys-utils-perf.test.ts) that occasionally fails on noisy CI runners when WASM lands just under the 5x threshold (e.g. 4.86x). 164 of 165 integration tests pass; this is not caused by this PR — the perf test is sensitive to runner load and has been flaky on main too. Re-running usually clears it.

Drops two third-party actions from .github/workflows/:

- borales/actions-yarn (in all five workflow files): replaced with
  corepack + yarn install --frozen-lockfile, using setup-node's
  built-in yarn cache.

- BerniWittmann/background-server-action (in integration-tests-V2.yml
  and integration-tests-V3.yml): replaced with explicit background
  shell steps. Each one launches the Hardhat node (`npm run node` /
  `npx hardhat node`) in the background, polls localhost:8545 over
  JSON-RPC until ready (matching the action's wait-on behaviour),
  runs the deploy + test steps, then kills the recorded PID in an
  `if: always()` cleanup step so the node never leaks past the job.

Reduces CI supply-chain surface: every workflow either runs with the
npm OIDC token in scope (publish) or checks out the private
Railgun-Privacy/contract repo (integration tests), so removing each
third-party action removes a path a compromised action could use to
exfiltrate those credentials.
@mattgle mattgle self-assigned this May 11, 2026
The engine and contract repos are checked out into ./engine/ and
./contract/ subdirectories, so there is no yarn.lock at the
workspace root. setup-node's `cache: 'yarn'` fails with
"Dependencies lock file is not found" before any install step runs.

Removing the cache directive unblocks the workflow. If caching is
wanted later, the right approach is `cache-dependency-path` set
to each subdir's lockfile - but for integration tests that's
arguably not worth the extra complexity.
@mattgle mattgle marked this pull request as ready for review May 11, 2026 18:02
@mattgle mattgle requested a review from mesquka May 11, 2026 18:02
@mattgle mattgle merged commit e2913b3 into main May 12, 2026
5 of 7 checks passed
@mattgle mattgle deleted the ci/remove-third-party-actions branch May 12, 2026 14:07
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.

2 participants