Node 24 enforcement + Linux ARM32 deprecation support#4303
Merged
Conversation
ff34d03 to
4c5eac9
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
Adds Node.js 24 enforcement/tracking for Node.js actions, with special handling for Linux ARM32 where Node 24 binaries are unavailable (deprecation/kill switch behavior and messaging).
Changes:
- Track Node20-targeting actions separately as either still-on-node20 vs. forced-to-node24, and emit separate job-level annotations.
- Add Linux ARM32 deprecation + kill-switch feature flags and plumb them into Node version selection.
- Add/extend L0 tests covering upgraded vs. deprecated tracking and ARM32-related NodeUtil behavior.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Test/L0/Worker/StepHostNodeVersionL0.cs | Adds L0 tests for ARM32 deprecate/kill behaviors in NodeUtil. |
| src/Test/L0/Worker/HandlerFactoryL0.cs | Adds L0 tests for upgraded-to-node24 vs deprecated tracking behavior. |
| src/Runner.Worker/JobExtension.cs | Splits job-finalization warnings for still-on-node20 vs upgraded-to-node24 actions. |
| src/Runner.Worker/Handlers/HandlerFactory.cs | Implements per-action Node version enforcement, ARM32 deprecate/kill logic, and tracking into two sets. |
| src/Runner.Worker/GlobalContext.cs | Adds a new global set for actions upgraded to node24. |
| src/Runner.Worker/ExecutionContext.cs | Initializes the new upgraded-actions tracking set at job start. |
| src/Runner.Common/Util/NodeUtil.cs | Extends ARM32 node version check to support deprecation and kill-switch phases. |
| src/Runner.Common/Constants.cs | Adds ARM32 feature flag constants and ARM32 deprecation message/date constants. |
You can also share your feedback on Copilot code review. Take the survey.
a3c3706 to
3bd3bff
Compare
ericsciple
reviewed
Mar 17, 2026
ericsciple
reviewed
Mar 17, 2026
Collaborator
ericsciple
left a comment
There was a problem hiding this comment.
Review from GitHub Copilot (via CLI)
ericsciple
previously approved these changes
Mar 17, 2026
ericsciple
approved these changes
Mar 17, 2026
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.
When we flip
UseNode24ByDefault, actions targeting node20 get forced to node24 and we show an annotation saying which ones were forced over. On linux-arm32 we can't do that since there's no node24 binary, so instead we show a deprecation warning and keep them on node20 for now.Added two new feature flags for the arm32 side:
actions_runner_deprecate_linux_arm32- warns that arm32 is going away, keeps running on node20actions_runner_kill_linux_arm32- for when we actually want to stop supporting it, fails the stepAlso split the tracking so upgraded-to-node24 actions and still-on-node20 actions get separate annotations instead of lumping them together.
Date for arm32 EOL is TBD, placeholder is October 2026, need to align on this still