Skip to content

ci: Update GitHub Actions and add Dependabot configuration - #405

Merged
kraenhansen merged 5 commits into
mainfrom
claude/nodejs-20-deprecation-ubspbg
Aug 12, 2026
Merged

ci: Update GitHub Actions and add Dependabot configuration#405
kraenhansen merged 5 commits into
mainfrom
claude/nodejs-20-deprecation-ubspbg

Conversation

@kraenhansen

Copy link
Copy Markdown
Collaborator

Summary

Updates GitHub Actions to their latest versions across all workflows and adds Dependabot configuration to keep actions synchronized with upstream releases.

Changes

  • Action version updates:

    • actions/checkout: v4 → v7
    • pnpm/action-setup: v4 → v6
    • actions/setup-node: v6 → v7
    • actions/setup-java: v3/v4 → v5
    • android-actions/setup-android: v3 → v4
    • actions/upload-artifact: v4 → v7
    • hendrikmuhs/ccache-action: v1.2 → v1.2.23 (pinned to exact patch to avoid Node.js 20 build)
  • Dependabot configuration:

    • Added .github/dependabot.yml to automatically track GitHub Actions updates
    • Configured weekly checks with grouped pull requests to avoid queue saturation
    • Uses ci prefix for commit messages and Dependencies label

Implementation Details

The ccache-action update includes a comment explaining the pin to v1.2.23: the floating v1 and v1.2 tags still point to a Node.js 20 build, which will become problematic when Node.js 20 is removed from runners. The pin can be relaxed once upstream moves those tags to v1.2.22 or later.

Dependabot is configured to group all GitHub Actions updates into a single pull request rather than creating separate PRs per action, since these are typically updated together anyway.

https://claude.ai/code/session_01W14eEfXdK5DYzv43MazryE

claude added 3 commits August 12, 2026 09:10
GitHub warns that actions/checkout@v4 and pnpm/action-setup@v4 target
Node.js 20 and are being forced onto Node.js 24. Move every action in
both workflows to its current major, which run on node24 natively:

- actions/checkout v4 -> v7
- pnpm/action-setup v4 -> v6
- actions/setup-node v6 -> v7
- actions/setup-java v3/v4 -> v5
- android-actions/setup-android v3 -> v4
- actions/upload-artifact v4 -> v7
- actions/cache v4 -> v6 (in the commented-out AVD cache step)

hendrikmuhs/ccache-action is the exception: its floating v1 and v1.2
tags still resolve to a Node.js 20 build, so it is pinned to the exact
v1.2.23 patch until upstream moves them.

aminya/setup-cpp@v1, reactivecircus/android-emulator-runner@v2 and
changesets/action@v2 already resolve to node24 builds and are unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W14eEfXdK5DYzv43MazryE
Weekly checks against .github/workflows, grouped into a single pull
request so the whole set moves together instead of one pull request per
action. Only the github-actions ecosystem is enabled: the pnpm workspace
is deliberately left out for now.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W14eEfXdK5DYzv43MazryE
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W14eEfXdK5DYzv43MazryE
@kraenhansen kraenhansen added C++ Apple 🍎 Anything related to the Apple platform (iOS, macOS, Cocoapods, Xcode, XCFrameworks, etc.) Android 🤖 Anything related to the Android platform (Gradle, NDK, Android SDK) Expo Ʌ CMake RN Our `cmake` wrapping CLI Host 🏡 Our `react-native-node-api-modules` package Ferric 🦀 MacOS 💻 Anything related to the Apple MacOS platform or React Native MacOS support host labels Aug 12, 2026
check.yml only runs on opened/synchronize/reopened, so adding a label
does not re-trigger it on its own.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W14eEfXdK5DYzv43MazryE
@kraenhansen kraenhansen self-assigned this Aug 12, 2026
@kraenhansen kraenhansen added the CI Continuous integration label Aug 12, 2026
v6 rewrote the self-installer to shell out to `npm ci`. Our self-hosted
Linux runner has no npm on PATH other than the one in the runner's own
Node.js 24 externals, and that copy is broken:

    Error: Cannot find module '../lib/cli.js'
    Require stack:
    - .../externals.2.336.0/node24/bin/npm

so "Test app (Android)" failed at the setup step. v4 and v5 bootstrap
from a pnpm bundled inside the action and never invoke npm, and v5 is
already a node24 action, so it clears the deprecation warning without
taking on the new npm dependency.

Also collapses the per-step ccache pin comments into one note per
workflow, now covering both held-back actions.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W14eEfXdK5DYzv43MazryE
@kraenhansen
kraenhansen merged commit fbfb44c into main Aug 12, 2026
17 of 18 checks passed
@kraenhansen
kraenhansen deleted the claude/nodejs-20-deprecation-ubspbg branch August 12, 2026 10:09
kraenhansen added a commit that referenced this pull request Aug 12, 2026
* ci: set Node.js up before pnpm and move to pnpm/action-setup v6

#405 held pnpm/action-setup at v5 because v6 bootstraps pnpm by shelling
out to `npm ci`, and the self-hosted Linux runner's only npm is the
broken copy in the runner's own Node.js 24 externals:

    Error: Cannot find module '../lib/cli.js'

v6 resolves npm through PATH and merely appends that externals
directory, so running actions/setup-node first — which prepends its own
Node.js installation — puts a working npm ahead of it.

The reason pnpm came first was setup-node's `cache: pnpm`, which shells
out to `pnpm store path` and so needs pnpm to already exist. v6 caches
the pnpm store itself, keyed on the lockfile, so that input moves from
setup-node to `cache: true` on pnpm/action-setup and the ordering
constraint disappears.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W14eEfXdK5DYzv43MazryE

* ci: re-run checks for the newly applied labels

check.yml only runs on opened/synchronize/reopened, so the label-gated
jobs — including the self-hosted Android one this change needs to prove
itself on — do not start from labelling alone.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W14eEfXdK5DYzv43MazryE

---------

Co-authored-by: Claude <noreply@anthropic.com>
kraenhansen pushed a commit that referenced this pull request Aug 12, 2026
host-cpp-tests was added on next (#398), so the Node.js 20 deprecation
sweep on main (#405, #407) never reached it: it is the one job in the
workflow still on actions/checkout@v4, pnpm/action-setup@v4 and
actions/setup-node@v6, and so the only remaining source of the runner's
"targets Node.js 20" warning.

Merges main to pick up #407 and gives the job the same arrangement as
its siblings: Node.js set up before pnpm, pnpm/action-setup v6 owning
the store cache, and ccache-action pinned to an exact patch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W14eEfXdK5DYzv43MazryE
kraenhansen added a commit that referenced this pull request Aug 12, 2026
* ci: bring host-cpp-tests in line with the rest of the workflow

host-cpp-tests was added on next (#398), so the Node.js 20 deprecation
sweep on main (#405, #407) never reached it: it is the one job in the
workflow still on actions/checkout@v4, pnpm/action-setup@v4 and
actions/setup-node@v6, and so the only remaining source of the runner's
"targets Node.js 20" warning.

Merges main to pick up #407 and gives the job the same arrangement as
its siblings: Node.js set up before pnpm, pnpm/action-setup v6 owning
the store cache, and ccache-action pinned to an exact patch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W14eEfXdK5DYzv43MazryE

* ci: re-run checks for the newly applied labels

check.yml only runs on opened/synchronize/reopened, so the host-gated
job this change is about does not start from labelling alone.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W14eEfXdK5DYzv43MazryE

---------

Co-authored-by: Claude <noreply@anthropic.com>
kraenhansen added a commit that referenced this pull request Aug 13, 2026
* ci: bring host-cpp-tests in line with the rest of the workflow

host-cpp-tests was added on next (#398), so the Node.js 20 deprecation
sweep on main (#405, #407) never reached it: it is the one job in the
workflow still on actions/checkout@v4, pnpm/action-setup@v4 and
actions/setup-node@v6, and so the only remaining source of the runner's
"targets Node.js 20" warning.

Merges main to pick up #407 and gives the job the same arrangement as
its siblings: Node.js set up before pnpm, pnpm/action-setup v6 owning
the store cache, and ccache-action pinned to an exact patch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W14eEfXdK5DYzv43MazryE

* ci: re-run checks for the newly applied labels

check.yml only runs on opened/synchronize/reopened, so the host-gated
job this change is about does not start from labelling alone.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W14eEfXdK5DYzv43MazryE

---------

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Android 🤖 Anything related to the Android platform (Gradle, NDK, Android SDK) Apple 🍎 Anything related to the Apple platform (iOS, macOS, Cocoapods, Xcode, XCFrameworks, etc.) C++ CI Continuous integration CMake RN Our `cmake` wrapping CLI Expo Ʌ Ferric 🦀 Host 🏡 Our `react-native-node-api-modules` package MacOS 💻 Anything related to the Apple MacOS platform or React Native MacOS support

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants