Skip to content

Commit 6d01a1d

Browse files
authoredJul 1, 2024··
ci: use node v20 for most jobs (#29959)
1 parent c5eee75 commit 6d01a1d

File tree

5 files changed

+120
-37
lines changed

5 files changed

+120
-37
lines changed
 

‎.github/workflows/build.yml

+53-24
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ concurrency:
3030

3131
env:
3232
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
33-
NODE_VERSION: 18
33+
NODE_VERSION_TEST: 18
34+
NODE_VERSION_BUILD: 20
3435
DRY_RUN: true
3536
TEST_LEGACY_DECRYPTION: true
3637
SPARSE_CHECKOUT: |-
@@ -105,13 +106,13 @@ jobs:
105106
with:
106107
repo: ${{ github.event.repository.full_name }}
107108
token: ${{ github.token }}
108-
node-version: ${{ env.NODE_VERSION }}
109+
node-version: ${{ env.NODE_VERSION_TEST }}
109110

110-
- name: Prefetch modules for `ubuntu-latest`
111+
- name: Prefetch test modules for `ubuntu-latest`
111112
id: setup-node
112113
uses: ./.github/actions/setup-node
113114
with:
114-
node-version: ${{ env.NODE_VERSION }}
115+
node-version: ${{ env.NODE_VERSION_TEST }}
115116
os: ${{ runner.os }}
116117
save-cache: true
117118

@@ -124,6 +125,27 @@ jobs:
124125
run: |
125126
echo "$(pnpm -s schedule-test-shards)" >> "$GITHUB_OUTPUT"
126127
128+
setup-build:
129+
runs-on: ubuntu-latest
130+
131+
outputs:
132+
node-version: ${{ env.NODE_VERSION_BUILD }}
133+
134+
steps:
135+
- name: Checkout code
136+
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
137+
with:
138+
filter: blob:none # we don't need all blobs
139+
sparse-checkout: ${{ env.SPARSE_CHECKOUT }}
140+
show-progress: false
141+
142+
- name: Prefetch build modules for `ubuntu-latest`
143+
uses: ./.github/actions/setup-node
144+
with:
145+
node-version: ${{ env.NODE_VERSION_BUILD }}
146+
os: ${{ runner.os }}
147+
save-cache: true
148+
127149
prefetch:
128150
needs: [setup]
129151

@@ -142,7 +164,6 @@ jobs:
142164
strategy:
143165
matrix:
144166
os: ${{ fromJSON(needs.setup.outputs.os-matrix-prefetch) }}
145-
node-version: [18]
146167

147168
runs-on: ${{ matrix.os }}
148169

@@ -161,12 +182,13 @@ jobs:
161182
if: needs.setup.outputs.os-matrix-is-full && runner.os != 'Linux'
162183
uses: ./.github/actions/setup-node
163184
with:
164-
node-version: ${{ env.NODE_VERSION }}
185+
node-version: ${{ env.NODE_VERSION_TEST }}
165186
os: ${{ runner.os }}
166187
save-cache: true
167188

168189
lint-eslint:
169-
needs: [setup]
190+
needs:
191+
- setup-build
170192
runs-on: ubuntu-latest
171193
timeout-minutes: 15
172194

@@ -182,7 +204,7 @@ jobs:
182204
- name: Setup Node.js
183205
uses: ./.github/actions/setup-node
184206
with:
185-
node-version: ${{ env.NODE_VERSION }}
207+
node-version: ${{ needs.setup-build.outputs.node-version }}
186208
os: ${{ runner.os }}
187209

188210
- name: Restore eslint cache
@@ -211,7 +233,8 @@ jobs:
211233
key: eslint-main-cache
212234

213235
lint-prettier:
214-
needs: [setup]
236+
needs:
237+
- setup-build
215238
runs-on: ubuntu-latest
216239
timeout-minutes: 7
217240

@@ -227,7 +250,7 @@ jobs:
227250
- name: Setup Node.js
228251
uses: ./.github/actions/setup-node
229252
with:
230-
node-version: ${{ env.NODE_VERSION }}
253+
node-version: ${{ needs.setup-build.outputs.node-version }}
231254
os: ${{ runner.os }}
232255

233256
- name: Restore prettier cache
@@ -256,7 +279,8 @@ jobs:
256279
key: prettier-main-cache
257280

258281
lint-docs:
259-
needs: [setup]
282+
needs:
283+
- setup-build
260284
runs-on: ubuntu-latest
261285
timeout-minutes: 7
262286

@@ -269,7 +293,7 @@ jobs:
269293
- name: Setup Node.js
270294
uses: ./.github/actions/setup-node
271295
with:
272-
node-version: ${{ env.NODE_VERSION }}
296+
node-version: ${{ needs.setup-build.outputs.node-version }}
273297
os: ${{ runner.os }}
274298

275299
- name: Lint markdown
@@ -285,7 +309,8 @@ jobs:
285309
run: pnpm markdown-lint
286310

287311
lint-other:
288-
needs: [setup]
312+
needs:
313+
- setup-build
289314
runs-on: ubuntu-latest
290315
timeout-minutes: 7
291316

@@ -298,7 +323,7 @@ jobs:
298323
- name: Setup Node.js
299324
uses: ./.github/actions/setup-node
300325
with:
301-
node-version: ${{ env.NODE_VERSION }}
326+
node-version: ${{ needs.setup-build.outputs.node-version }}
302327
os: ${{ runner.os }}
303328

304329
- name: Type check
@@ -337,7 +362,7 @@ jobs:
337362
- name: Setup Node.js
338363
uses: ./.github/actions/setup-node
339364
with:
340-
node-version: ${{ env.NODE_VERSION }}
365+
node-version: ${{ env.NODE_VERSION_TEST }}
341366
os: ${{ runner.os }}
342367

343368
- name: Cache jest
@@ -348,7 +373,7 @@ jobs:
348373
jest-cache-${{
349374
runner.os
350375
}}-${{
351-
env.NODE_VERSION
376+
env.NODE_VERSION_TEST
352377
}}-${{
353378
hashFiles('pnpm-lock.yaml')
354379
}}-${{
@@ -416,6 +441,7 @@ jobs:
416441
coverage-threshold:
417442
needs:
418443
- test
444+
- setup-build
419445
runs-on: ubuntu-latest
420446
timeout-minutes: 3
421447
if: (success() || failure()) && github.event.pull_request.draft != true
@@ -430,7 +456,7 @@ jobs:
430456
- name: Setup Node.js
431457
uses: ./.github/actions/setup-node
432458
with:
433-
node-version: ${{ env.NODE_VERSION }}
459+
node-version: ${{ needs.setup-build.outputs.node-version }}
434460
os: ${{ runner.os }}
435461

436462
- name: Download coverage reports
@@ -505,7 +531,8 @@ jobs:
505531
run: exit 1
506532

507533
build:
508-
needs: setup
534+
needs:
535+
- setup-build
509536
runs-on: ubuntu-latest
510537
timeout-minutes: 15
511538
if: github.event.pull_request.draft != true
@@ -518,7 +545,7 @@ jobs:
518545
- name: Setup Node.js
519546
uses: ./.github/actions/setup-node
520547
with:
521-
node-version: ${{ env.NODE_VERSION }}
548+
node-version: ${{ needs.setup-build.outputs.node-version }}
522549
os: ${{ runner.os }}
523550

524551
- name: Build
@@ -539,7 +566,9 @@ jobs:
539566
path: renovate-0.0.0-semantic-release.tgz
540567

541568
build-docs:
542-
needs: [lint-docs]
569+
needs:
570+
- lint-docs
571+
- setup-build
543572
runs-on: ubuntu-latest
544573
timeout-minutes: 5
545574
if: github.event.pull_request.draft != true
@@ -552,7 +581,7 @@ jobs:
552581
- name: Setup Node.js
553582
uses: ./.github/actions/setup-node
554583
with:
555-
node-version: ${{ env.NODE_VERSION }}
584+
node-version: ${{ needs.setup-build.outputs.node-version }}
556585
os: ${{ runner.os }}
557586

558587
- name: Build
@@ -588,7 +617,7 @@ jobs:
588617
- name: Setup Node.js
589618
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
590619
with:
591-
node-version: ${{ env.NODE_VERSION }}
620+
node-version: ${{ env.NODE_VERSION_TEST }}
592621

593622
- name: Download package
594623
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7
@@ -603,7 +632,7 @@ jobs:
603632

604633
release:
605634
needs:
606-
- setup
635+
- setup-build
607636
- lint-eslint
608637
- lint-prettier
609638
- lint-docs
@@ -639,7 +668,7 @@ jobs:
639668
- name: Setup Node.js
640669
uses: ./.github/actions/setup-node
641670
with:
642-
node-version: ${{ env.NODE_VERSION }}
671+
node-version: ${{ needs.setup-build.outputs.node-version }}
643672
os: ${{ runner.os }}
644673

645674
- uses: sigstore/cosign-installer@59acb6260d9c0ba8f4a2f9d9b48431a222b68e20 # v3.5.0

‎.github/workflows/update-data.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
workflow_dispatch:
66

77
env:
8-
NODE_VERSION: 18
8+
NODE_VERSION: 20
99

1010
permissions:
1111
contents: read

‎package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
"prepare": "run-s 'prepare:*'",
3737
"prepare:husky": "husky",
3838
"prepare:generate": "run-s 'generate:*'",
39-
"prepare:re2": "node tools/check-re2.mjs",
39+
"prepare:deps": "node tools/prepare-deps.mjs",
4040
"prestart": "run-s 'generate:*'",
4141
"pretest": "run-s 'generate:*'",
4242
"prettier": "prettier --cache --check '**/*.{ts,js,mjs,json,md,yml}'",

‎tools/check-re2.mjs

-11
This file was deleted.

‎tools/prepare-deps.mjs

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import { execSync } from 'child_process';
2+
3+
function testRe2() {
4+
execSync(
5+
`node -e "try{require('re2')('.*').exec('test')}catch(e){console.error(e);if(e.code === 'ERR_DLOPEN_FAILED' && e.message.includes('NODE_MODULE_VERSION')) process.exit(1); else process.exit(-1)}"`,
6+
{ stdio: 'inherit' },
7+
);
8+
console.log(`Ok.`);
9+
}
10+
11+
function testSqlite() {
12+
execSync(
13+
`node -e "try{new require('better-sqlite3')(':memory:')}catch(e){console.error(e);if(e.code === 'ERR_DLOPEN_FAILED' && e.message.includes('NODE_MODULE_VERSION')) process.exit(1); else process.exit(-1)}"`,
14+
{ stdio: 'inherit' },
15+
);
16+
console.log(`Ok.`);
17+
}
18+
19+
(() => {
20+
console.log('Checking re2 ... ');
21+
try {
22+
testRe2();
23+
} catch (e) {
24+
console.error(`Failed.\n${e}`);
25+
try {
26+
if (e.status === 1) {
27+
console.log(`Retry re2 install ...`);
28+
execSync('pnpm run install', {
29+
stdio: 'inherit',
30+
cwd: `${process.cwd()}/node_modules/re2`,
31+
});
32+
testRe2();
33+
return;
34+
}
35+
} catch (e1) {
36+
console.error(`Retry failed.\n${e1}`);
37+
}
38+
39+
process.exit(1);
40+
}
41+
})();
42+
43+
(() => {
44+
console.log('Checking better-sqlite3 ... ');
45+
try {
46+
testSqlite();
47+
} catch (e) {
48+
console.error(`Failed.\n${e}`);
49+
try {
50+
if (e.status === 1) {
51+
console.log(`Retry better-sqlite3 install ...`);
52+
execSync('pnpm run install', {
53+
stdio: 'inherit',
54+
cwd: `${process.cwd()}/node_modules/better-sqlite3`,
55+
});
56+
testSqlite();
57+
return;
58+
}
59+
} catch (e1) {
60+
console.error(`Retry failed.\n${e1}`);
61+
}
62+
63+
process.exit(1);
64+
}
65+
})();

0 commit comments

Comments
 (0)
Please sign in to comment.