-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Upgrade GitHub Actions for Node 24 compatibility #2124
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: Salman Muin Kayser Chishti <13schishti@gmail.com>
WalkthroughUpdated GitHub Actions versions across 12 workflow files, standardizing to newer action releases (checkout v4→v6, setup-python/go/node, artifact handling v4→v6/v7, cache v2→v5). No logic or control-flow changes. Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
🤖 Fix all issues with AI agents
In @.github/workflows/ai-service-release-nightly-image.yaml:
- Around line 30-31: Before merging this workflow change, verify and document
that all self-hosted runners referenced by the workflow (the linux_amd64_runner
and linux_arm64_runner labels) are upgraded to GitHub Actions Runner version
2.327.1 or later because actions/upload-artifact@v6 and
actions/download-artifact@v7 require the Node.js 24 runtime; update your release
checklist or deployment notes to block rollout until those runners report
>=2.327.1 and re-run the workflow validation.
In @.github/workflows/create-rc-release.yaml:
- Around line 17-24: The workflow uses actions/checkout@v6 and
actions/setup-go@v6 which have breaking changes and require newer runners;
verify compatibility by either (a) pinning to a previous non-breaking major
(e.g., actions/checkout@v3 or actions/setup-go@v4) or (b) updating the workflow
to accommodate v6 semantics: ensure you handle credential persistence changes
for actions/checkout and confirm the actions/setup-go input (go-version) is
compatible with the new toolchain selection, and also ensure your GitHub Actions
runner meets the minimum versions (v2.329.0+ for checkout, v2.327.1+ for
setup-go) or add a note/guard in CI to require those runner versions.
In @.github/workflows/ui-lint.yaml:
- Around line 33-36: The "Get yarn cache directory path" step (id:
yarn-cache-dir-path) uses the deprecated ::set-output syntax; update the step's
run command to write the output variable named "dir" to the $GITHUB_OUTPUT
environment file by appending a line in the form "dir=<yarn cache dir>" (i.e.,
capture the result of yarn cache dir and append it to $GITHUB_OUTPUT) instead of
using ::set-output, leaving the rest of the step and the subsequent
actions/cache usage unchanged.
- Around line 28-36: The step with id "yarn-cache-dir-path" uses the deprecated
::set-output syntax; update that step's run command to use the GITHUB_OUTPUT
mechanism by writing a line with the key and yarn cache dir value into the file
referenced by the GITHUB_OUTPUT environment variable (i.e., replace the echo
"::set-output name=dir::$(yarn cache dir)" invocation with an
append-to-GITHUB_OUTPUT style write), leaving the surrounding workflow steps
(uses: actions/checkout@v6, uses: actions/setup-node@v6, uses: actions/cache@v5)
unchanged.
In @.github/workflows/ui-test.yaml:
- Around line 27-35: The workflow step with id "yarn-cache-dir-path" uses the
deprecated "::set-output" command; update its run command to emit the output via
the GITHUB_OUTPUT file instead (i.e., write the key=value pair for "dir" to
$GITHUB_OUTPUT) so downstream steps read the value from
steps.yarn-cache-dir-path.outputs.dir; replace the current run that echoes
"::set-output name=dir::$(yarn cache dir)" with a command that appends
"dir=$(yarn cache dir)" to the $GITHUB_OUTPUT file and keep the step id/name
unchanged.
| - uses: actions/checkout@v6 | ||
| - name: Login to GitHub Container Registry |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
cat -n .github/workflows/ai-service-release-nightly-image.yaml | sed -n '25,80p'Repository: Canner/WrenAI
Length of output: 2422
🌐 Web query:
actions/checkout v6 release notes breaking changes migration
💡 Result:
actions/checkout v6 — release notes (what changed)
- Credential persistence changed (security hardening): when
persist-credentials: true(default), checkout no longer writes credentials into.git/config. Instead, it stores them in a separate file under$RUNNER_TEMPand wires Git up so normalgit fetch/pushstill work. (github.com) - Most workflows require no changes: plain
gitcommands you run on the runner (includinggit push) should continue working without modifications. (github.com) - Docker container actions caveat: if you run authenticated git commands from inside a Docker container action, you need GitHub Actions Runner v2.329.0+. (github.com)
Breaking changes / who might be impacted
You’re most likely to be impacted if your workflow (or a third-party action/script) directly inspects or depends on credentials being present in .git/config (for example, parsing .git/config to retrieve the token/credential helper config). In v6, that assumption no longer holds because credentials are persisted via the $RUNNER_TEMP mechanism instead. (github.com)
Migration checklist (v5 → v6)
- Change
uses: actions/checkout@v5→uses: actions/checkout@v6. (github.com) - If you use Docker container actions and do
gitauth operations inside the container, ensure your runner is v2.329.0+. (github.com) - If anything fails after upgrade, search your workflow/action code for any dependency on
.git/configcontaining auth, and refactor to rely on normalgitbehavior (or explicitly pass credentials another way). (github.com)
Citations:
- 1: https://github.com/actions/checkout?utm_source=openai
- 2: https://github.com/actions/checkout?utm_source=openai
- 3: https://github.com/actions/checkout?utm_source=openai
- 4: https://github.com/actions/checkout?utm_source=openai
- 5: https://github.com/actions/checkout?utm_source=openai
- 6: https://github.com/actions/checkout?utm_source=openai
- 7: https://github.com/actions/checkout?utm_source=openai
🌐 Web query:
actions/upload-artifact v6 release notes breaking changes migration
💡 Result:
actions/upload-artifact v6 — release notes / breaking changes
What changed in v6 (v6.0.0)
- Runtime upgrade to Node.js 24 (
runs.using: node24). - Self-hosted runner requirement: GitHub Actions Runner ≥ 2.327.1 (update runners before bumping to
@v6).
These are the key (and effectively breaking) changes called out for v6. [1][2]
Migration guidance
If you’re on GitHub-hosted runners
- Update your workflow step to:
uses: actions/upload-artifact@v6
No other workflow changes are called out specifically for v6 beyond the Node 24 runtime shift. [1][2]
If you’re on self-hosted runners (most common break)
- Upgrade the runner fleet to ≥ 2.327.1.
- Then bump:
uses: actions/upload-artifact@v6
Otherwise, v6 may fail to start due to the Node 24 runtime requirement. [1][2]
If you’re migrating from v3 (or earlier) → v6
Most “real” breaking behavior changes happened at v4 (and still apply in v6), notably:
- Artifacts are immutable: you can’t upload to the same artifact name multiple times (unless you change your approach, e.g., unique names per matrix/job, or use
overwrite). [2] - Hidden files excluded by default (v4.4+); enable explicitly if needed. [2]
- Per-job artifact limit: 500 artifacts. [2]
- Self-hosted networking/firewall rules may need updates (v4 breaking change). [2]
Deprecation context (why you’re likely migrating)
GitHub deprecated v3 on Jan 30, 2025, so moving to v4+ (and thus v6) is required on GitHub.com. [3]
Sources: GitHub Releases for actions/upload-artifact v6.0.0 [1], repository README “v6 – What’s new” and v4 breaking changes [2], GitHub Changelog deprecation notice for v3 [3].
🌐 Web query:
actions/download-artifact v7 release notes breaking changes migration
💡 Result:
actions/download-artifact@v7 (v7.0.0) — release notes / breaking changes
Breaking change
- Runtime bump to Node.js 24:
actions/download-artifact@v7now runs on Node.js 24 (runs.using: node24). This also introduces a minimum GitHub Actions Runner version of 2.327.1 (relevant for self-hosted runners). Previously, v6 defaulted to Node.js 20. [1][2][3]
Migration checklist (from v6 → v7)
- Update your workflow step:
uses: actions/download-artifact@v6→uses: actions/download-artifact@v7[1]
- If you use self-hosted runners, upgrade the runner to ≥ 2.327.1 before bumping to v7, or your workflow may fail. [1][2]
- If you cannot upgrade runners yet, stay on v6 until you can. (The v7 notes explicitly call out the minimum runner requirement.) [1][2]
What changed (high level)
- Node 24 support + some related maintenance updates (including updated GHES guidance and a dependency update to address a Node 24 deprecation warning). [1]
Ensure self-hosted runners are at version 2.327.1 or later before deploying.
actions/checkout@v6 is safe for this workflow—it only impacts code that directly inspects .git/config for credentials, which doesn't apply here.
However, both actions/upload-artifact@v6 and actions/download-artifact@v7 require GitHub Actions Runner ≥ 2.327.1 due to Node.js 24 runtime. Since this workflow uses custom self-hosted runners (linux_amd64_runner, linux_arm64_runner), verify those runners have been upgraded to the minimum version before this change lands in production.
Also applies to: 63-75
🤖 Prompt for AI Agents
In @.github/workflows/ai-service-release-nightly-image.yaml around lines 30 -
31, Before merging this workflow change, verify and document that all
self-hosted runners referenced by the workflow (the linux_amd64_runner and
linux_arm64_runner labels) are upgraded to GitHub Actions Runner version 2.327.1
or later because actions/upload-artifact@v6 and actions/download-artifact@v7
require the Node.js 24 runtime; update your release checklist or deployment
notes to block rollout until those runners report >=2.327.1 and re-run the
workflow validation.
| - name: Checkout repository | ||
| uses: actions/checkout@v4 | ||
| uses: actions/checkout@v6 | ||
| with: | ||
| ref: main | ||
|
|
||
| - name: Set up Go | ||
| uses: actions/setup-go@v4 | ||
| uses: actions/setup-go@v6 | ||
| with: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🌐 Web query:
actions/checkout v6 release notes breaking changes
💡 Result:
actions/checkout v6: release notes / breaking changes (summary)
-
Credential persistence changed (main “breaking” change): when
persist-credentials: true(default), the action no longer writes auth into.git/config; it now stores credentials in a separate file under$RUNNER_TEMPand wires it up so normalgit fetch/pushstill works. (github.com)- Who can break: workflows/tools that directly read or modify
.git/configexpecting the token/extraheader to be there, or that depend on the prior on-disk location/format of the injected credentials. (github.com)
- Who can break: workflows/tools that directly read or modify
-
Runner requirement for Docker container actions: if you run authenticated git commands from inside a Docker container action, you need GitHub Actions Runner
v2.329.0+for v6 behavior to work. (github.com)
Official “What’s Changed” (v6.0.0)
- “Persist creds to a separate file” (PR
#2286) + README updates (including Node.js 24 requirements details). (github.com)
Citations:
- 1: https://github.com/actions/checkout?utm_source=openai
- 2: https://github.com/actions/checkout?utm_source=openai
- 3: https://github.com/actions/checkout?utm_source=openai
- 4: https://github.com/actions/checkout/releases
🌐 Web query:
actions/setup-go v6 release notes breaking changes
💡 Result:
actions/setup-go v6.0.0 (released Sep 4) breaking changes:
- Go toolchain selection/management changed (“Improve toolchain handling…”)—this can affect which Go version gets installed/used compared to v5. [1]
- Node.js runtime upgraded from Node 20 → Node 24 (can impact self-hosted runners / older environments). [1][2]
- Runner compatibility requirement: ensure your GitHub Actions runner is v2.327.1+. [1][2]
Sources: GitHub v6.0.0 release notes [1] and repository “Breaking changes in V6” section [2].
Verify actions/checkout@v6 and actions/setup-go@v6 for compatibility with this workflow.
Both actions have breaking changes in v6:
-
actions/checkout@v6: Credential persistence changed (stored in separate file instead of
.git/config). This likely won't affect the basiccheckoutstep here unless the workflow directly manipulates.git/config. -
actions/setup-go@v6: Toolchain selection/management changed, which can affect Go version installation. Verify the
go-versioninput specified is compatible with the new toolchain handling.
Both require GitHub Actions Runner v2.329.0+ (checkout) and v2.327.1+ (setup-go). Confirm your environment meets these minimum versions.
🤖 Prompt for AI Agents
In @.github/workflows/create-rc-release.yaml around lines 17 - 24, The workflow
uses actions/checkout@v6 and actions/setup-go@v6 which have breaking changes and
require newer runners; verify compatibility by either (a) pinning to a previous
non-breaking major (e.g., actions/checkout@v3 or actions/setup-go@v4) or (b)
updating the workflow to accommodate v6 semantics: ensure you handle credential
persistence changes for actions/checkout and confirm the actions/setup-go input
(go-version) is compatible with the new toolchain selection, and also ensure
your GitHub Actions runner meets the minimum versions (v2.329.0+ for checkout,
v2.327.1+ for setup-go) or add a note/guard in CI to require those runner
versions.
| - uses: actions/checkout@v6 | ||
| - name: Set up Node.js | ||
| uses: actions/setup-node@v2 | ||
| uses: actions/setup-node@v6 | ||
| with: | ||
| node-version: '18' | ||
| - name: Get yarn cache directory path | ||
| id: yarn-cache-dir-path | ||
| run: echo "::set-output name=dir::$(yarn cache dir)" | ||
| - uses: actions/cache@v2 | ||
| - uses: actions/cache@v5 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🌐 Web query:
actions/checkout v6 release notes breaking changes
💡 Result:
actions/checkout v6 — release notes & breaking changes
Release notes (v6.0.0):
- “Persist creds to a separate file” (credential-handling refactor) plus README/changelog updates and a v6 beta prep. [1]
What changed (the “breaking-change-ish” parts):
- Credentials are no longer written into
.git/config. Whenpersist-credentialsis used, credentials are now stored in a separate file under$RUNNER_TEMPand applied via Git’s conditional include mechanism (includeIf). Most workflows should keep working without changes (e.g.,git fetch/git push). [2][3] - If you run authenticated git commands inside a Docker container action, you now need GitHub Actions Runner v2.329.0+ for the auth wiring to work. [2]
Who might actually be impacted:
- Workflows/tools that directly read or depend on the token being present in
.git/config(because v6 moves it elsewhere). [2][3]
Sources: GitHub release v6.0.0 notes [1], official README/Marketplace “Checkout v6” notes [2], and the implementing PR description (details on $RUNNER_TEMP + includeIf) [3].
References
[1] (github.com)
[2] (github.com)
[3] (github.com)
Citations:
- 1: https://github.com/actions/checkout/releases/tag/v6.0.0
- 2: https://github.com/marketplace/actions/checkout?utm_source=openai
- 3: Persist creds to a separate file actions/checkout#2286
🌐 Web query:
actions/setup-node v6 release notes breaking changes
💡 Result:
actions/setup-node v6 — breaking changes (from release notes)
- Automatic caching is now limited to npm: v6.0.0 changes the “automatic caching” behavior so it only applies to npm; Yarn/pnpm caching is no longer automatic and must be configured via the
cacheinput (and workflow/docs may need updates accordingly). [1] always-authremoved: the action no longer supports/handlesalways-auth(deprecated in npm), so workflows should remove anyalways-authusage. This landed in the v6 line (noted in v6 docs and implemented in v6.1.0). [2][3]
Sources: GitHub Releases for v6.0.0 and v6.1.0, plus the Marketplace “Breaking changes in V6” section. [1][2][3]
🌐 Web query:
actions/cache v5 release notes breaking changes
💡 Result:
actions/cache@v5 — breaking/required changes (release notes)
- Runtime upgrade:
actions/cache@v5now runs on Node.js 24. You must be on GitHub Actions Runner>= 2.327.1(notably for self-hosted runners), or the action may fail to run. [1] - Cache service migration note (not a v5-only breaking change, but commonly relevant during upgrades): the cache backend moved to the newer “cache service (v2) APIs”; older/deprecated action versions were slated to stop working around Feb 1, 2025 if not upgraded. [1]
Source: actions/cache “What’s New” / important changes section. [1]
References
[1] actions/cache repository (README / What’s New): https://github.com/actions/cache
🌐 Web query:
GitHub Actions set-output deprecated replacement
💡 Result:
::set-output is deprecated; replace it by writing step outputs to the GITHUB_OUTPUT environment file. [1][2]
In a workflow (Bash)
- name: Produce output
id: my_step
run: echo "my_output=some value" >> "$GITHUB_OUTPUT"
- name: Consume output
run: echo "${{ steps.my_step.outputs.my_output }}"[1][2]
PowerShell
- id: my_step
run: '"my_output=some value" >> $env:GITHUB_OUTPUT'[2]
Multiline output
{
echo "my_output<<EOF"
echo "line 1"
echo "line 2"
echo "EOF"
} >> "$GITHUB_OUTPUT"[2]
If you author JavaScript/TypeScript actions
Update @actions/core to v1.10.0+, which uses the new env-file mechanism under the hood. [1]
Replace deprecated set-output with GITHUB_OUTPUT.
The action versions (checkout@v6, setup-node@v6, cache@v5) are compatible with your workflow configuration. Note that setup-node@v6 disabled automatic Yarn caching; your manual actions/cache configuration mitigates this.
However, line 35 uses the deprecated ::set-output syntax:
run: echo "::set-output name=dir::$(yarn cache dir)"Replace it with:
run: echo "dir=$(yarn cache dir)" >> "$GITHUB_OUTPUT"🧰 Tools
🪛 actionlint (1.7.10)
[error] 35-35: workflow command "set-output" was deprecated. use echo "{name}={value}" >> $GITHUB_OUTPUT instead: https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions
(deprecated-commands)
🤖 Prompt for AI Agents
In @.github/workflows/ui-lint.yaml around lines 28 - 36, The step with id
"yarn-cache-dir-path" uses the deprecated ::set-output syntax; update that
step's run command to use the GITHUB_OUTPUT mechanism by writing a line with the
key and yarn cache dir value into the file referenced by the GITHUB_OUTPUT
environment variable (i.e., replace the echo "::set-output name=dir::$(yarn
cache dir)" invocation with an append-to-GITHUB_OUTPUT style write), leaving the
surrounding workflow steps (uses: actions/checkout@v6, uses:
actions/setup-node@v6, uses: actions/cache@v5) unchanged.
| - name: Get yarn cache directory path | ||
| id: yarn-cache-dir-path | ||
| run: echo "::set-output name=dir::$(yarn cache dir)" | ||
| - uses: actions/cache@v2 | ||
| - uses: actions/cache@v5 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🌐 Web query:
GitHub Actions set-output command deprecated GITHUB_OUTPUT
💡 Result:
::set-output (and ::save-state) workflow commands are deprecated because writing commands to stdout could be exploited via untrusted log output. GitHub recommends migrating to environment files instead. (github.blog)
Replace set-output with GITHUB_OUTPUT (step outputs)
Before (deprecated):
- name: Compute
id: vars
run: echo "::set-output name=FOO::bar"After (recommended):
- name: Compute
id: vars
run: echo "FOO=bar" >> "$GITHUB_OUTPUT"
- name: Use it
run: echo "${{ steps.vars.outputs.FOO }}"GitHub documents step outputs as writing name=value lines to the file referenced by GITHUB_OUTPUT. (docs.github.com)
Important note on “disabled soon”
GitHub previously announced deprecation/removal timelines, but later postponed removal due to continued usage; you may still see warnings encouraging migration. (github.blog)
Citations:
- 1: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands?utm_source=openai
- 2: https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-commands?utm_source=openai
- 3: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands?utm_source=openai
Replace deprecated set-output command with $GITHUB_OUTPUT.
::set-output is deprecated by GitHub and exploitable via untrusted log output; use the $GITHUB_OUTPUT environment file instead.
🔧 Suggested fix
- name: Get yarn cache directory path
id: yarn-cache-dir-path
- run: echo "::set-output name=dir::$(yarn cache dir)"
+ run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT🧰 Tools
🪛 actionlint (1.7.10)
[error] 35-35: workflow command "set-output" was deprecated. use echo "{name}={value}" >> $GITHUB_OUTPUT instead: https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions
(deprecated-commands)
🤖 Prompt for AI Agents
In @.github/workflows/ui-lint.yaml around lines 33 - 36, The "Get yarn cache
directory path" step (id: yarn-cache-dir-path) uses the deprecated ::set-output
syntax; update the step's run command to write the output variable named "dir"
to the $GITHUB_OUTPUT environment file by appending a line in the form
"dir=<yarn cache dir>" (i.e., capture the result of yarn cache dir and append it
to $GITHUB_OUTPUT) instead of using ::set-output, leaving the rest of the step
and the subsequent actions/cache usage unchanged.
| - uses: actions/checkout@v6 | ||
| - name: Set up Node.js | ||
| uses: actions/setup-node@v2 | ||
| uses: actions/setup-node@v6 | ||
| with: | ||
| node-version: '18' | ||
| - name: Get yarn cache directory path | ||
| id: yarn-cache-dir-path | ||
| run: echo "::set-output name=dir::$(yarn cache dir)" | ||
| - uses: actions/cache@v2 | ||
| - uses: actions/cache@v5 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🌐 Web query:
GitHub Actions set-output deprecated $GITHUB_OUTPUT replacement
💡 Result:
To replace the deprecated workflow command:
echo "::set-output name=MY_OUTPUT::$value"write to the step’s environment file instead:
echo "MY_OUTPUT=$value" >> "$GITHUB_OUTPUT"Then consume it the same way:
${{ steps.<id>.outputs.MY_OUTPUT }}For multiline outputs, use the delimiter (“heredoc-style”) format:
{
echo 'MY_OUTPUT<<EOF'
printf '%s\n' "$value"
echo 'EOF'
} >> "$GITHUB_OUTPUT"GitHub announced the deprecation of set-output (stdout workflow command) in favor of environment files like GITHUB_OUTPUT. [1] [2]
Sources:
[1] GitHub Docs – Workflow commands / setting an output parameter (GITHUB_OUTPUT) and multiline delimiter syntax https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-commands
[2] GitHub Changelog – Deprecating save-state and set-output (move to env files) https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands
🏁 Script executed:
cat -n .github/workflows/ui-test.yaml | sed -n '25,37p'Repository: Canner/WrenAI
Length of output: 617
Replace deprecated set-output command.
::set-output is deprecated as of October 2022; switch to $GITHUB_OUTPUT to avoid warnings and future breakage.
♻️ Proposed fix
- run: echo "::set-output name=dir::$(yarn cache dir)"
+ run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT🧰 Tools
🪛 actionlint (1.7.10)
[error] 34-34: workflow command "set-output" was deprecated. use echo "{name}={value}" >> $GITHUB_OUTPUT instead: https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions
(deprecated-commands)
🤖 Prompt for AI Agents
In @.github/workflows/ui-test.yaml around lines 27 - 35, The workflow step with
id "yarn-cache-dir-path" uses the deprecated "::set-output" command; update its
run command to emit the output via the GITHUB_OUTPUT file instead (i.e., write
the key=value pair for "dir" to $GITHUB_OUTPUT) so downstream steps read the
value from steps.yarn-cache-dir-path.outputs.dir; replace the current run that
echoes "::set-output name=dir::$(yarn cache dir)" with a command that appends
"dir=$(yarn cache dir)" to the $GITHUB_OUTPUT file and keep the step id/name
unchanged.
Summary
Upgrade GitHub Actions to their latest versions to ensure compatibility with Node 24, as Node 20 will reach end-of-life in April 2026.
Changes
actions/cachev2v5actions/checkoutv3,v4v6actions/download-artifactv4v7actions/github-scriptv6v8actions/setup-gov4,v5v6actions/setup-nodev2v6actions/setup-pythonv4,v5v6actions/upload-artifactv4v6Context
Per GitHub's announcement, Node 20 is being deprecated and runners will begin using Node 24 by default starting March 4th, 2026.
Why this matters
Security Note
Actions that were previously pinned to commit SHAs remain pinned to SHAs (updated to the latest release SHA) to maintain the security benefits of immutable references.
Testing
These changes only affect CI/CD workflow configurations and should not impact application functionality. The workflows should be tested by running them on a branch before merging.
Summary by CodeRabbit