9
9
branches :
10
10
- main
11
11
- release-*
12
+ merge_group :
13
+ branches :
14
+ - main
15
+ # - release-*
12
16
13
17
permissions :
14
18
contents : read
@@ -24,43 +28,107 @@ jobs:
24
28
strategy :
25
29
fail-fast : false
26
30
matrix :
27
- os :
28
- - ubuntu-latest
29
- - windows-latest
30
- - macos-latest
31
- node-version :
32
- - ' 22'
33
- - ' 20'
34
- - ' 18'
35
- - ' 16'
36
- - ' 14'
37
- bundle :
38
- - ' true'
39
- include :
40
- - node-version : ' lts/*'
31
+ config :
32
+ # Main builds
33
+ - os : ubuntu-latest
34
+ node-version : ' 24'
35
+ bundle : true
36
+
37
+ # Other builds (skipped in merge queues)
38
+ - os : windows-latest
39
+ node-version : ' 24'
40
+ bundle : true
41
+ skip : ${{ github.event_name == 'merge_group' }}
42
+ - os : macos-latest
43
+ node-version : ' 24'
44
+ bundle : true
45
+ skip : ${{ github.event_name == 'merge_group' }}
46
+ - os : ubuntu-latest
47
+ node-version : ' 22'
48
+ bundle : true
49
+ - os : windows-latest
50
+ node-version : ' 22'
51
+ bundle : true
52
+ skip : ${{ github.event_name == 'merge_group' }}
53
+ # Skip macOS for this version; resources are limited.
54
+ # - os: macos-latest
55
+ # node-version: '22'
56
+ # bundle: true
57
+ # skip: ${{ github.event_name == 'merge_group' }}
58
+ - os : ubuntu-latest
59
+ node-version : ' 20'
60
+ bundle : true
61
+ - os : windows-latest
62
+ node-version : ' 20'
63
+ bundle : true
64
+ skip : ${{ github.event_name == 'merge_group' }}
65
+ # Skip macOS for this version; resources are limited.
66
+ # - os: macos-latest
67
+ # node-version: '20'
68
+ # bundle: true
69
+ # skip: ${{ github.event_name == 'merge_group' }}
70
+ - os : ubuntu-latest
71
+ node-version : ' 18'
72
+ bundle : true
73
+ - os : windows-latest
74
+ node-version : ' 18'
75
+ bundle : true
76
+ skip : ${{ github.event_name == 'merge_group' }}
77
+ # Skip macOS for this version; resources are limited.
78
+ # - os: macos-latest
79
+ # node-version: '18'
80
+ # bundle: true
81
+ # skip: ${{ github.event_name == 'merge_group' }}
82
+ - os : ubuntu-latest
83
+ node-version : ' 16'
84
+ bundle : true
85
+ - os : windows-latest
86
+ node-version : ' 16'
87
+ bundle : true
88
+ skip : ${{ github.event_name == 'merge_group' }}
89
+ - os : macos-latest
90
+ node-version : ' 16'
91
+ bundle : true
92
+ skip : ${{ github.event_name == 'merge_group' }}
93
+ - os : ubuntu-latest
94
+ node-version : ' 14'
95
+ bundle : true
96
+ skip : ${{ github.event_name == 'merge_group' }}
97
+ - os : windows-latest
98
+ node-version : ' 14'
99
+ bundle : true
100
+ skip : ${{ github.event_name == 'merge_group' }}
101
+ # No Node 14 on ARM macOS
102
+ # - os: macos-latest
103
+ # node-version: '14'
104
+ # bundle: true
105
+ # skip: ${{ github.event_name == 'merge_group' }}
106
+
107
+ - os : ubuntu-latest
108
+ node-version : ' lts/*'
41
109
bundle : false
42
- os : ubuntu-latest
110
+ skip : ${{ github.event_name == 'merge_group' }}
111
+
43
112
exclude :
44
- # No Node 14 on ARM macOS
45
- - node-version : ' 14'
46
- os : macos-latest
113
+ - config :
114
+ skip : true
47
115
48
- runs-on : ${{ matrix.os }}
49
- name : Test Node ${{ matrix.node-version }} on ${{ matrix.os }}${{ (!matrix.bundle && ' with --no-bundle') || '' }}
116
+ runs-on : ${{ matrix.config. os }}
117
+ name : Test Node ${{ matrix.config. node-version }} on ${{ matrix.config. os }}${{ (!matrix.config .bundle && ' with --no-bundle') || '' }}
50
118
51
119
steps :
52
120
- uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
53
- - name : Use node version ${{ matrix.node-version }}
121
+ - name : Use node version ${{ matrix.config. node-version }}
54
122
uses : actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
55
123
with :
56
- node-version : ${{ matrix.node-version }}
124
+ node-version : ${{ matrix.config. node-version }}
57
125
check-latest : true
58
126
- run : npm ci
59
127
60
128
- name : Tests
61
129
id : test
62
130
# run tests, but lint separately
63
- run : npm run test -- --no-lint --bundle=${{ matrix.bundle }}
131
+ run : npm run test -- --no-lint --bundle=${{ matrix.config. bundle }}
64
132
65
133
- name : Print baseline diff on failure
66
134
if : ${{ failure() && steps.test.conclusion == 'failure' }}
70
138
git diff --staged --exit-code
71
139
72
140
coverage :
141
+ if : ${{ github.event_name != 'merge_group' }}
142
+
73
143
runs-on :
74
144
- ' self-hosted'
75
145
- ' 1ES.Pool=TypeScript-1ES-GitHub-Large'
@@ -294,6 +364,8 @@ jobs:
294
364
run : npx hereby build-src --built
295
365
296
366
baselines :
367
+ if : ${{ github.event_name != 'merge_group' }}
368
+
297
369
runs-on : ubuntu-latest
298
370
299
371
steps :
@@ -338,3 +410,27 @@ jobs:
338
410
with :
339
411
name : fix_baselines.patch
340
412
path : fix_baselines.patch
413
+
414
+ required :
415
+ runs-on : ubuntu-latest
416
+ if : ${{ always() }}
417
+ needs :
418
+ - test
419
+ - coverage
420
+ - lint
421
+ - knip
422
+ - format
423
+ - browser-integration
424
+ - typecheck
425
+ - smoke
426
+ - package-size
427
+ - misc
428
+ - self-check
429
+ - baselines
430
+
431
+ steps :
432
+ - name : Check required jobs
433
+ env :
434
+ NEEDS : ${{ toJson(needs) }}
435
+ run : |
436
+ ! echo $NEEDS | jq -e 'to_entries[] | { job: .key, result: .value.result } | select((.result == "success" or .result == "skipped") | not)'
0 commit comments