6767jobs :
6868 job_get_metadata :
6969 name : Get Metadata
70- runs-on : ubuntu-20 .04
70+ runs-on : ubuntu-24 .04
7171 permissions :
7272 pull-requests : read
7373 steps :
@@ -123,7 +123,7 @@ jobs:
123123 job_build :
124124 name : Build
125125 needs : job_get_metadata
126- runs-on : ubuntu-20 .04
126+ runs-on : ubuntu-24 .04
127127 timeout-minutes : 15
128128 if : |
129129 needs.job_get_metadata.outputs.changed_any_code == 'true' ||
@@ -214,7 +214,7 @@ jobs:
214214 job_check_branches :
215215 name : Check PR branches
216216 needs : job_get_metadata
217- runs-on : ubuntu-20 .04
217+ runs-on : ubuntu-24 .04
218218 if : github.event_name == 'pull_request'
219219 permissions :
220220 pull-requests : write
@@ -230,7 +230,7 @@ jobs:
230230 name : Size Check
231231 needs : [job_get_metadata, job_build]
232232 timeout-minutes : 15
233- runs-on : ubuntu-20 .04
233+ runs-on : ubuntu-24 .04
234234 if :
235235 github.event_name == 'pull_request' || needs.job_get_metadata.outputs.is_base_branch == 'true' ||
236236 needs.job_get_metadata.outputs.is_release == 'true'
@@ -260,7 +260,7 @@ jobs:
260260 # inter-package dependencies resolve cleanly.
261261 needs : [job_get_metadata, job_build]
262262 timeout-minutes : 10
263- runs-on : ubuntu-20 .04
263+ runs-on : ubuntu-24 .04
264264 steps :
265265 - name : Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
266266 uses : actions/checkout@v4
@@ -274,6 +274,9 @@ jobs:
274274 uses : ./.github/actions/restore-cache
275275 with :
276276 dependency_cache_key : ${{ needs.job_build.outputs.dependency_cache_key }}
277+ - name : Check for duplicate dependencies in lockfile
278+ # Run `yarn dedupe-deps:fix` locally to resolve any duplicates.
279+ run : yarn dedupe-deps:check
277280 - name : Lint source files
278281 run : yarn lint:lerna
279282 - name : Lint for ES compatibility
@@ -283,7 +286,7 @@ jobs:
283286 name : Check file formatting
284287 needs : [job_get_metadata]
285288 timeout-minutes : 10
286- runs-on : ubuntu-20 .04
289+ runs-on : ubuntu-24 .04
287290 steps :
288291 - name : Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
289292 uses : actions/checkout@v4
@@ -306,7 +309,7 @@ jobs:
306309 name : Circular Dependency Check
307310 needs : [job_get_metadata, job_build]
308311 timeout-minutes : 10
309- runs-on : ubuntu-20 .04
312+ runs-on : ubuntu-24 .04
310313 steps :
311314 - name : Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
312315 uses : actions/checkout@v4
@@ -326,7 +329,7 @@ jobs:
326329 job_artifacts :
327330 name : Upload Artifacts
328331 needs : [job_get_metadata, job_build]
329- runs-on : ubuntu-20 .04
332+ runs-on : ubuntu-24 .04
330333 # Build artifacts are only needed for releasing workflow.
331334 if : needs.job_get_metadata.outputs.is_release == 'true'
332335 steps :
@@ -363,7 +366,7 @@ jobs:
363366 name : Browser Unit Tests
364367 needs : [job_get_metadata, job_build]
365368 timeout-minutes : 10
366- runs-on : ubuntu-20 .04
369+ runs-on : ubuntu-24 .04
367370 steps :
368371 - name : Check out base commit (${{ github.event.pull_request.base.sha }})
369372 uses : actions/checkout@v4
@@ -410,7 +413,7 @@ jobs:
410413 needs : [job_get_metadata, job_build]
411414 if : needs.job_build.outputs.changed_bun == 'true' || github.event_name != 'pull_request'
412415 timeout-minutes : 10
413- runs-on : ubuntu-20 .04
416+ runs-on : ubuntu-24 .04
414417 strategy :
415418 fail-fast : false
416419 steps :
@@ -437,7 +440,7 @@ jobs:
437440 needs : [job_get_metadata, job_build]
438441 if : needs.job_build.outputs.changed_deno == 'true' || github.event_name != 'pull_request'
439442 timeout-minutes : 10
440- runs-on : ubuntu-20 .04
443+ runs-on : ubuntu-24 .04
441444 strategy :
442445 fail-fast : false
443446 steps :
@@ -467,7 +470,7 @@ jobs:
467470 name : Node (${{ matrix.node }}) Unit Tests
468471 needs : [job_get_metadata, job_build]
469472 timeout-minutes : 10
470- runs-on : ubuntu-20 .04
473+ runs-on : ubuntu-24 .04
471474 strategy :
472475 fail-fast : false
473476 matrix :
@@ -522,7 +525,7 @@ jobs:
522525 matrix.project) || ''}}${{ matrix.shard && format(' ({0}/{1})', matrix.shard, matrix.shards) || ''}} Tests
523526 needs : [job_get_metadata, job_build]
524527 if : needs.job_build.outputs.changed_browser_integration == 'true' || github.event_name != 'pull_request'
525- runs-on : ubuntu-20 .04-large-js
528+ runs-on : ubuntu-24 .04-large-js
526529 timeout-minutes : 25
527530 strategy :
528531 fail-fast : false
@@ -616,7 +619,7 @@ jobs:
616619 name : PW ${{ matrix.bundle }} Tests
617620 needs : [job_get_metadata, job_build]
618621 if : needs.job_build.outputs.changed_browser_integration == 'true' || github.event_name != 'pull_request'
619- runs-on : ubuntu-20 .04
622+ runs-on : ubuntu-24 .04
620623 timeout-minutes : 15
621624 strategy :
622625 fail-fast : false
@@ -676,7 +679,7 @@ jobs:
676679 job_check_for_faulty_dts :
677680 name : Check for faulty .d.ts files
678681 needs : [job_get_metadata, job_build]
679- runs-on : ubuntu-20 .04
682+ runs-on : ubuntu-24 .04
680683 timeout-minutes : 5
681684 steps :
682685 - name : Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
@@ -704,7 +707,7 @@ jobs:
704707 Tests
705708 needs : [job_get_metadata, job_build]
706709 if : needs.job_build.outputs.changed_node_integration == 'true' || github.event_name != 'pull_request'
707- runs-on : ubuntu-20 .04
710+ runs-on : ubuntu-24 .04
708711 timeout-minutes : 15
709712 strategy :
710713 fail-fast : false
@@ -751,7 +754,7 @@ jobs:
751754 name : Remix (Node ${{ matrix.node }}) Tests
752755 needs : [job_get_metadata, job_build]
753756 if : needs.job_build.outputs.changed_remix == 'true' || github.event_name != 'pull_request'
754- runs-on : ubuntu-20 .04
757+ runs-on : ubuntu-24 .04
755758 timeout-minutes : 10
756759 strategy :
757760 fail-fast : false
@@ -799,7 +802,7 @@ jobs:
799802 always() &&
800803 needs.job_build.result == 'success'
801804 needs : [job_get_metadata, job_build]
802- runs-on : ubuntu-20 .04-large-js
805+ runs-on : ubuntu-24 .04-large-js
803806 timeout-minutes : 15
804807 outputs :
805808 matrix : ${{ steps.matrix.outputs.matrix }}
@@ -860,7 +863,7 @@ jobs:
860863 if :
861864 always() && needs.job_e2e_prepare.result == 'success' && needs.job_e2e_prepare.outputs.matrix != '{"include":[]}'
862865 needs : [job_get_metadata, job_build, job_e2e_prepare]
863- runs-on : ubuntu-22 .04
866+ runs-on : ubuntu-24 .04
864867 timeout-minutes : 15
865868 env :
866869 # We just use a dummy DSN here, only send to the tunnel anyhow
@@ -979,7 +982,7 @@ jobs:
979982 needs.job_e2e_prepare.outputs.matrix-optional != '{"include":[]}' && (github.event_name != 'pull_request' ||
980983 github.event.pull_request.head.repo.full_name == github.repository) && github.actor != 'dependabot[bot]'
981984 needs : [job_get_metadata, job_build, job_e2e_prepare]
982- runs-on : ubuntu-20 .04
985+ runs-on : ubuntu-24 .04
983986 timeout-minutes : 15
984987 env :
985988 E2E_TEST_AUTH_TOKEN : ${{ secrets.E2E_TEST_AUTH_TOKEN }}
@@ -1099,7 +1102,7 @@ jobs:
10991102 ]
11001103 # Always run this, even if a dependent job failed
11011104 if : always()
1102- runs-on : ubuntu-20 .04
1105+ runs-on : ubuntu-24 .04
11031106 steps :
11041107 - name : Check for failures
11051108 if : contains(needs.*.result, 'failure')
0 commit comments