99 branches :
1010 - main
1111 - release-*
12+ merge_group :
13+ branches :
14+ - main
15+ # - release-*
1216
1317permissions :
1418 contents : read
@@ -24,43 +28,107 @@ jobs:
2428 strategy :
2529 fail-fast : false
2630 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/*'
41109 bundle : false
42- os : ubuntu-latest
110+ skip : ${{ github.event_name == 'merge_group' }}
111+
43112 exclude :
44- # No Node 14 on ARM macOS
45- - node-version : ' 14'
46- os : macos-latest
113+ - config :
114+ skip : true
47115
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') || '' }}
50118
51119 steps :
52120 - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
53- - name : Use node version ${{ matrix.node-version }}
121+ - name : Use node version ${{ matrix.config. node-version }}
54122 uses : actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
55123 with :
56- node-version : ${{ matrix.node-version }}
124+ node-version : ${{ matrix.config. node-version }}
57125 check-latest : true
58126 - run : npm ci
59127
60128 - name : Tests
61129 id : test
62130 # 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 }}
64132
65133 - name : Print baseline diff on failure
66134 if : ${{ failure() && steps.test.conclusion == 'failure' }}
70138 git diff --staged --exit-code
71139
72140 coverage :
141+ if : ${{ github.event_name != 'merge_group' }}
142+
73143 runs-on :
74144 - ' self-hosted'
75145 - ' 1ES.Pool=TypeScript-1ES-GitHub-Large'
@@ -294,6 +364,8 @@ jobs:
294364 run : npx hereby build-src --built
295365
296366 baselines :
367+ if : ${{ github.event_name != 'merge_group' }}
368+
297369 runs-on : ubuntu-latest
298370
299371 steps :
@@ -338,3 +410,27 @@ jobs:
338410 with :
339411 name : fix_baselines.patch
340412 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