[ci] Use Node 20.10.0+ for check-packages #25709
Merged
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.
Reviewers: this PR has an extra commit to force CI to check all packages. This commit will be reverted before landing.
Why
Node 20.10.0 includes a memory leak fix in V8's compilation cache. This matters for Jest test suites, which repeatedly discard and reload the environment. See jestjs/jest#11956.
With a sample size of one, the check-packages step ran in 27m46s with Node 20.10.0 and 31m27s with Node 18.18.2.
How
Used setup-node to explicitly install Node 20. Getting the latest version will include the V8 fix. Also upgraded the checkout action (breaking change is that it uses Node 20 itself internally).
If this works well, we could consider using setup-node's own Yarn node_modules caching instead of our own but that is out of the scope of this PR.
Test Plan
Make sure this passes in CI.