2222 uses : actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
2323 with :
2424 node-version-file : " package.json"
25+ - name : Install Yarn (if not yet installed)
26+ run : yarn --version || npm install -g yarn@1.22.22
2527 - name : Install dependencies
2628 run : yarn install --ignore-engines --ignore-scripts --frozen-lockfile
2729 - name : Lint
5456 container : ghcr.io/getsentry/sentry-test-ubuntu-20.04-amd64:0dd255f3d41d013c1db4c4e08ffd22ee7959c3cc
5557 node : 24
5658 binary : linux-x64-glibc-137
59+ - os : ubuntu-22.04
60+ container : ghcr.io/getsentry/sentry-test-ubuntu-20.04-amd64:0dd255f3d41d013c1db4c4e08ffd22ee7959c3cc
61+ node : 26
62+ binary : linux-x64-glibc-147
5763
5864 # x64 musl
5965 - os : ubuntu-22.04
7278 container : node:24-alpine3.20
7379 node : 24
7480 binary : linux-x64-musl-137
81+ - os : ubuntu-22.04
82+ container : node:26-alpine3.22
83+ node : 26
84+ binary : linux-x64-musl-147
7585
7686 # arm64 glibc
7787 - os : ubuntu-22.04
@@ -90,6 +100,10 @@ jobs:
90100 arch : arm64
91101 node : 24
92102 binary : linux-arm64-glibc-137
103+ - os : ubuntu-22.04
104+ arch : arm64
105+ node : 26
106+ binary : linux-arm64-glibc-147
93107
94108 # arm64 musl
95109 - os : ubuntu-22.04
@@ -112,6 +126,11 @@ jobs:
112126 container : node:24-alpine3.20
113127 node : 24
114128 binary : linux-arm64-musl-137
129+ - os : ubuntu-22.04
130+ arch : arm64
131+ container : node:26-alpine3.22
132+ node : 26
133+ binary : linux-arm64-musl-147
115134
116135 # macos x64
117136 - os : macos-15-intel
@@ -130,6 +149,10 @@ jobs:
130149 node : 24
131150 arch : x64
132151 binary : darwin-x64-137
152+ - os : macos-15-intel
153+ node : 26
154+ arch : x64
155+ binary : darwin-x64-147
133156
134157 # macos arm64
135158 - os : macos-15
@@ -152,6 +175,11 @@ jobs:
152175 node : 24
153176 target_platform : darwin
154177 binary : darwin-arm64-137
178+ - os : macos-15
179+ arch : arm64
180+ node : 26
181+ target_platform : darwin
182+ binary : darwin-arm64-147
155183
156184 # windows x64
157185 - os : windows-2022
@@ -170,6 +198,10 @@ jobs:
170198 node : 24
171199 arch : x64
172200 binary : win32-x64-137
201+ - os : windows-2022
202+ node : 26
203+ arch : x64
204+ binary : win32-x64-147
173205
174206 steps :
175207 - name : Setup (alpine)
@@ -191,6 +223,9 @@ jobs:
191223 with :
192224 node-version : ${{ matrix.node }}
193225
226+ - name : Install Yarn (if not yet installed)
227+ run : yarn --version || npm install -g yarn@1.22.22
228+
194229 - name : Increase yarn network timeout on Windows
195230 if : contains(matrix.os, 'windows')
196231 run : yarn config set network-timeout 600000 -g
@@ -209,6 +244,22 @@ jobs:
209244 with :
210245 python-version : " 3.9.13"
211246
247+ # Node 26 V8 headers include <source_location>, which requires a newer C++ toolchain.
248+ # Our ubuntu-20.04 glibc container defaults to an older compiler, so upgrade only this target.
249+ - name : Setup compiler (Node 26 glibc x64)
250+ if : matrix.binary == 'linux-x64-glibc-147'
251+ run : |
252+ # The base container ships a stale Yarn apt source with an expired/missing key.
253+ # Remove it so apt-get update can succeed for toolchain installation.
254+ rm -f /etc/apt/sources.list.d/yarn.list
255+ apt-get update
256+ apt-get install -y software-properties-common
257+ add-apt-repository -y ppa:ubuntu-toolchain-r/test
258+ apt-get update
259+ apt-get install -y gcc-12 g++-12
260+ echo "CC=gcc-12" >> "$GITHUB_ENV"
261+ echo "CXX=g++-12" >> "$GITHUB_ENV"
262+
212263 - name : Setup (arm64| ${{ contains(matrix.container, 'alpine') && 'musl' || 'glibc' }})
213264 if : matrix.arch == 'arm64' && !contains(matrix.container, 'alpine') && matrix.target_platform != 'darwin'
214265 run : |
@@ -227,6 +278,19 @@ jobs:
227278 if : matrix.arch != 'arm64'
228279 run : yarn build:bindings:configure
229280
281+ - name : Remove unsupported Node LTO flags
282+ if : matrix.os == 'windows-2022' && matrix.node == 26 && matrix.arch != 'arm64'
283+ shell : pwsh
284+ run : |
285+ $projectFiles = Get-ChildItem -Path build -Filter *.vcxproj -Recurse
286+ foreach ($file in $projectFiles) {
287+ $content = Get-Content -Raw -Path $file.FullName
288+ $content = $content -replace '(?i)\s*-flto=(thin|full)', ''
289+ $content = $content -replace '(?i)\s*/flto=(thin|full)', ''
290+ $content = $content -replace '(?i)\s*/opt:lldltojobs=\d+', ''
291+ Set-Content -Path $file.FullName -Value $content -NoNewline
292+ }
293+
230294 - name : Configure node-gyp (arm64, ${{ contains(matrix.container, 'alpine') && 'musl' || 'glibc' }})
231295 if : matrix.arch == 'arm64' && matrix.target_platform != 'darwin'
232296 run : yarn build:bindings:configure:arm64
@@ -286,6 +350,9 @@ jobs:
286350 with :
287351 node-version-file : " package.json"
288352
353+ - name : Install Yarn (if not yet installed)
354+ run : yarn --version || npm install -g yarn@1.22.22
355+
289356 - name : Install dependencies
290357 run : yarn install --ignore-engines --ignore-scripts --frozen-lockfile
291358
@@ -324,7 +391,7 @@ jobs:
324391 macos-15-intel, # macOS x64
325392 windows-latest,
326393 ]
327- node : [18, 20, 22, 24, 25 ]
394+ node : [18, 20, 22, 24, 26 ]
328395 steps :
329396 - name : Check out current commit
330397 uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
0 commit comments