Skip to content

Commit c1f5656

Browse files
authored
Restructure CI to prepare for required checks and merge queues (#61978)
1 parent 39c5d01 commit c1f5656

File tree

1 file changed

+119
-23
lines changed

1 file changed

+119
-23
lines changed

.github/workflows/ci.yml

Lines changed: 119 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ on:
99
branches:
1010
- main
1111
- release-*
12+
merge_group:
13+
branches:
14+
- main
15+
# - release-*
1216

1317
permissions:
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' }}
@@ -70,6 +138,8 @@ jobs:
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

Comments
 (0)