Skip to content

Commit fbfb44c

Browse files
kraenhansenclaude
andauthored
ci: Update GitHub Actions and add Dependabot configuration (#405)
* ci: update GitHub Actions off the deprecated Node.js 20 runtime 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 * ci: let Dependabot keep the GitHub Actions up to date 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 * ci: label Dependabot pull requests Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W14eEfXdK5DYzv43MazryE * ci: re-run checks for newly applied labels 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 * ci: hold pnpm/action-setup at v5 for the self-hosted runner 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 --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent b647224 commit fbfb44c

3 files changed

Lines changed: 89 additions & 53 deletions

File tree

‎.github/dependabot.yml‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
version: 2
2+
3+
updates:
4+
# Keeps the actions used by .github/workflows in step with their upstream
5+
# releases. Without this, majors drift until a runner deprecation (such as the
6+
# Node.js 20 removal) turns the drift into a warning on every run.
7+
- package-ecosystem: github-actions
8+
directory: /
9+
schedule:
10+
interval: weekly
11+
# One pull request for the whole set: these are updated together anyway, and
12+
# a separate pull request per action would drown the queue.
13+
groups:
14+
github-actions:
15+
patterns:
16+
- "*"
17+
commit-message:
18+
prefix: "ci"
19+
labels:
20+
- Dependencies

‎.github/workflows/check.yml‎

Lines changed: 54 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,27 @@ concurrency:
2525
group: ${{ github.workflow }}-${{ github.ref }}
2626
cancel-in-progress: true
2727

28+
# Two actions below are deliberately held back from their newest release, both
29+
# because of the Node.js 20 deprecation:
30+
#
31+
# - pnpm/action-setup is pinned to v5, not v6. v6 rewrote the self-installer to
32+
# shell out to `npm ci`, and our self-hosted Linux runner has no npm on PATH
33+
# beyond the runner's own Node.js 24 externals — where it is broken. v5 is a
34+
# Node.js 24 action too, and still bootstraps from a bundled pnpm, so it
35+
# clears the deprecation without the new npm dependency. Move to v6 once that
36+
# runner has a working npm.
37+
# - hendrikmuhs/ccache-action is pinned to an exact patch because its floating
38+
# v1 / v1.2 tags still point at a Node.js 20 build. Float again once upstream
39+
# moves them to >= v1.2.22.
40+
2841
jobs:
2942
lint:
3043
name: Lint
3144
runs-on: ubuntu-latest
3245
steps:
33-
- uses: actions/checkout@v4
34-
- uses: pnpm/action-setup@v4
35-
- uses: actions/setup-node@v6
46+
- uses: actions/checkout@v7
47+
- uses: pnpm/action-setup@v5
48+
- uses: actions/setup-node@v7
3649
with:
3750
node-version: lts/krypton
3851
cache: pnpm
@@ -41,18 +54,18 @@ jobs:
4154
with:
4255
clang-format: true
4356
- name: ccache
44-
uses: hendrikmuhs/ccache-action@v1.2
57+
uses: hendrikmuhs/ccache-action@v1.2.23
4558
with:
4659
key: ${{ github.job }}-${{ runner.os }}
4760
# Set up JDK and Android SDK only because we need weak-node-api, to build ferric-example and to run the linting
4861
# TODO: Remove this once we have a way to run linting without building the native code
4962
- name: Set up JDK 17
50-
uses: actions/setup-java@v3
63+
uses: actions/setup-java@v5
5164
with:
5265
java-version: "17"
5366
distribution: "temurin"
5467
- name: Setup Android SDK
55-
uses: android-actions/setup-android@v3
68+
uses: android-actions/setup-android@v4
5669
with:
5770
packages: tools platform-tools ndk;${{ env.NDK_VERSION }}
5871
- run: rustup target add x86_64-linux-android
@@ -79,9 +92,9 @@ jobs:
7992
runs-on: ${{ matrix.runner }}
8093
name: Unit tests (${{ matrix.runner }})
8194
steps:
82-
- uses: actions/checkout@v4
83-
- uses: pnpm/action-setup@v4
84-
- uses: actions/setup-node@v6
95+
- uses: actions/checkout@v7
96+
- uses: pnpm/action-setup@v5
97+
- uses: actions/setup-node@v7
8598
with:
8699
node-version: lts/krypton
87100
cache: pnpm
@@ -90,16 +103,16 @@ jobs:
90103
with:
91104
clang-format: true
92105
- name: ccache
93-
uses: hendrikmuhs/ccache-action@v1.2
106+
uses: hendrikmuhs/ccache-action@v1.2.23
94107
with:
95108
key: ${{ github.job }}-${{ runner.os }}
96109
- name: Set up JDK 17
97-
uses: actions/setup-java@v4
110+
uses: actions/setup-java@v5
98111
with:
99112
java-version: "17"
100113
distribution: "temurin"
101114
- name: Setup Android SDK
102-
uses: android-actions/setup-android@v3
115+
uses: android-actions/setup-android@v4
103116
with:
104117
packages: tools platform-tools ndk;${{ env.NDK_VERSION }}
105118
- run: rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi i686-linux-android aarch64-apple-ios-sim
@@ -118,9 +131,9 @@ jobs:
118131
runs-on: ${{ matrix.runner }}
119132
name: Weak Node-API tests (${{ matrix.runner }})
120133
steps:
121-
- uses: actions/checkout@v4
122-
- uses: pnpm/action-setup@v4
123-
- uses: actions/setup-node@v6
134+
- uses: actions/checkout@v7
135+
- uses: pnpm/action-setup@v5
136+
- uses: actions/setup-node@v7
124137
with:
125138
node-version: lts/krypton
126139
cache: pnpm
@@ -129,7 +142,7 @@ jobs:
129142
with:
130143
clang-format: true
131144
- name: ccache
132-
uses: hendrikmuhs/ccache-action@v1.2
145+
uses: hendrikmuhs/ccache-action@v1.2.23
133146
with:
134147
key: ${{ github.job }}-${{ runner.os }}
135148
- run: pnpm install
@@ -147,9 +160,9 @@ jobs:
147160
name: Test app (iOS)
148161
runs-on: macos-latest
149162
steps:
150-
- uses: actions/checkout@v4
151-
- uses: pnpm/action-setup@v4
152-
- uses: actions/setup-node@v6
163+
- uses: actions/checkout@v7
164+
- uses: pnpm/action-setup@v5
165+
- uses: actions/setup-node@v7
153166
with:
154167
node-version: lts/krypton
155168
cache: pnpm
@@ -158,16 +171,16 @@ jobs:
158171
with:
159172
clang-format: true
160173
- name: ccache
161-
uses: hendrikmuhs/ccache-action@v1.2
174+
uses: hendrikmuhs/ccache-action@v1.2.23
162175
with:
163176
key: ${{ github.job }}-${{ runner.os }}
164177
- name: Set up JDK 17
165-
uses: actions/setup-java@v3
178+
uses: actions/setup-java@v5
166179
with:
167180
java-version: "17"
168181
distribution: "temurin"
169182
- name: Setup Android SDK
170-
uses: android-actions/setup-android@v3
183+
uses: android-actions/setup-android@v4
171184
with:
172185
packages: tools platform-tools ndk;${{ env.NDK_VERSION }}
173186
- run: rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi i686-linux-android aarch64-apple-ios-sim
@@ -191,9 +204,9 @@ jobs:
191204
name: Test app (macOS)
192205
runs-on: macos-latest
193206
steps:
194-
- uses: actions/checkout@v4
195-
- uses: pnpm/action-setup@v4
196-
- uses: actions/setup-node@v6
207+
- uses: actions/checkout@v7
208+
- uses: pnpm/action-setup@v5
209+
- uses: actions/setup-node@v7
197210
with:
198211
node-version: lts/krypton
199212
cache: pnpm
@@ -202,11 +215,11 @@ jobs:
202215
with:
203216
clang-format: true
204217
- name: ccache
205-
uses: hendrikmuhs/ccache-action@v1.2
218+
uses: hendrikmuhs/ccache-action@v1.2.23
206219
with:
207220
key: ${{ github.job }}-${{ runner.os }}
208221
- name: Set up JDK 17
209-
uses: actions/setup-java@v3
222+
uses: actions/setup-java@v5
210223
with:
211224
java-version: "17"
212225
distribution: "temurin"
@@ -239,9 +252,9 @@ jobs:
239252
name: Test app (Android)
240253
runs-on: ubuntu-self-hosted
241254
steps:
242-
- uses: actions/checkout@v4
243-
- uses: pnpm/action-setup@v4
244-
- uses: actions/setup-node@v6
255+
- uses: actions/checkout@v7
256+
- uses: pnpm/action-setup@v5
257+
- uses: actions/setup-node@v7
245258
with:
246259
node-version: lts/krypton
247260
cache: pnpm
@@ -250,16 +263,16 @@ jobs:
250263
with:
251264
clang-format: true
252265
- name: ccache
253-
uses: hendrikmuhs/ccache-action@v1.2
266+
uses: hendrikmuhs/ccache-action@v1.2.23
254267
with:
255268
key: ${{ github.job }}-${{ runner.os }}
256269
- name: Set up JDK 17
257-
uses: actions/setup-java@v4
270+
uses: actions/setup-java@v5
258271
with:
259272
java-version: "17"
260273
distribution: "temurin"
261274
- name: Setup Android SDK
262-
uses: android-actions/setup-android@v3
275+
uses: android-actions/setup-android@v4
263276
with:
264277
packages: tools platform-tools ndk;${{ env.NDK_VERSION }} cmake;${{ env.CMAKE_VERSION }}
265278
- run: rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi i686-linux-android aarch64-apple-ios-sim
@@ -275,7 +288,7 @@ jobs:
275288
echo "REACT_NATIVE_OVERRIDE_HERMES_DIR=$REACT_NATIVE_OVERRIDE_HERMES_DIR" >> $GITHUB_ENV
276289
working-directory: apps/test-app
277290
# - name: Setup Android Emulator cache
278-
# uses: actions/cache@v4
291+
# uses: actions/cache@v6
279292
# id: avd-cache
280293
# with:
281294
# path: |
@@ -320,7 +333,7 @@ jobs:
320333
kill $LOGCAT_PID || true
321334
- name: Upload device logs
322335
if: always()
323-
uses: actions/upload-artifact@v4
336+
uses: actions/upload-artifact@v7
324337
with:
325338
name: emulator-logcat
326339
path: apps/test-app/emulator-logcat.txt
@@ -329,9 +342,9 @@ jobs:
329342
name: Test ferric Apple triplets
330343
runs-on: macos-latest
331344
steps:
332-
- uses: actions/checkout@v4
333-
- uses: pnpm/action-setup@v4
334-
- uses: actions/setup-node@v6
345+
- uses: actions/checkout@v7
346+
- uses: pnpm/action-setup@v5
347+
- uses: actions/setup-node@v7
335348
with:
336349
node-version: lts/krypton
337350
cache: pnpm
@@ -340,11 +353,11 @@ jobs:
340353
with:
341354
clang-format: true
342355
- name: ccache
343-
uses: hendrikmuhs/ccache-action@v1.2
356+
uses: hendrikmuhs/ccache-action@v1.2.23
344357
with:
345358
key: ${{ github.job }}-${{ runner.os }}
346359
- name: Set up JDK 17
347-
uses: actions/setup-java@v3
360+
uses: actions/setup-java@v5
348361
with:
349362
java-version: "17"
350363
distribution: "temurin"
@@ -363,7 +376,7 @@ jobs:
363376
run: lipo -info ferric_example.apple.node/*/libferric_example.framework/libferric_example > lipo-info.txt
364377
working-directory: packages/ferric-example
365378
- name: Upload lipo info
366-
uses: actions/upload-artifact@v4
379+
uses: actions/upload-artifact@v7
367380
with:
368381
name: lipo-info
369382
path: packages/ferric-example/lipo-info.txt

‎.github/workflows/release.yml‎

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ on:
2020
# refreshing the "Version Packages" pull request until someone approves. The
2121
# two jobs that must not overlap carry their own groups instead.
2222

23+
# pnpm/action-setup is pinned to v5 and hendrikmuhs/ccache-action to an exact
24+
# patch, both for Node.js 20 deprecation reasons. See the note in check.yml.
25+
2326
jobs:
2427
# changesets/action's sub-actions split the "what should happen?" decision out
2528
# of the doing, which is what lets only the publish half sit behind the "main"
@@ -35,9 +38,9 @@ jobs:
3538
outputs:
3639
mode: ${{ steps.select.outputs.mode }}
3740
steps:
38-
- uses: actions/checkout@v4
39-
- uses: pnpm/action-setup@v4
40-
- uses: actions/setup-node@v6
41+
- uses: actions/checkout@v7
42+
- uses: pnpm/action-setup@v5
43+
- uses: actions/setup-node@v7
4144
with:
4245
node-version: lts/krypton
4346
cache: pnpm
@@ -67,9 +70,9 @@ jobs:
6770
contents: write # the version branch
6871
pull-requests: write # the "Version Packages" pull request
6972
steps:
70-
- uses: actions/checkout@v4
71-
- uses: pnpm/action-setup@v4
72-
- uses: actions/setup-node@v6
73+
- uses: actions/checkout@v7
74+
- uses: pnpm/action-setup@v5
75+
- uses: actions/setup-node@v7
7376
with:
7477
node-version: lts/krypton
7578
cache: pnpm
@@ -94,9 +97,9 @@ jobs:
9497
contents: write # git tags and GitHub releases
9598
id-token: write # NPM trusted publishing
9699
steps:
97-
- uses: actions/checkout@v4
98-
- uses: pnpm/action-setup@v4
99-
- uses: actions/setup-node@v6
100+
- uses: actions/checkout@v7
101+
- uses: pnpm/action-setup@v5
102+
- uses: actions/setup-node@v7
100103
with:
101104
node-version: lts/krypton
102105
cache: pnpm
@@ -105,16 +108,16 @@ jobs:
105108
with:
106109
clang-format: true
107110
- name: ccache
108-
uses: hendrikmuhs/ccache-action@v1.2
111+
uses: hendrikmuhs/ccache-action@v1.2.23
109112
with:
110113
key: ${{ github.job }}-${{ runner.os }}
111114
- name: Set up JDK 17
112-
uses: actions/setup-java@v3
115+
uses: actions/setup-java@v5
113116
with:
114117
java-version: "17"
115118
distribution: "temurin"
116119
- name: Setup Android SDK
117-
uses: android-actions/setup-android@v3
120+
uses: android-actions/setup-android@v4
118121
with:
119122
packages: tools platform-tools ndk;${{ env.NDK_VERSION }}
120123
- run: rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi i686-linux-android aarch64-apple-ios-sim

0 commit comments

Comments
 (0)