Skip to content

Commit 84e3625

Browse files
committed
Test-drive the preview Ubuntu 26.04 runner images
Both join this repository's full test matrix only, flagged continue-on-error; the shipped defaults in `repomatic/matrix_axes.py` stay on GA images, so no downstream repo inherits a preview. https://github.com/actions/runner-images#available-images
1 parent eb87c88 commit 84e3625

3 files changed

Lines changed: 41 additions & 1 deletion

File tree

docs/test-matrix.md

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ from repomatic.cli import repomatic
2929
invoke(repomatic, args=['show-test-matrix', 'full'])
3030
```
3131

32-
With no `[tool.repomatic.test-matrix.*]` overrides, this is the built-in default: the six runners from the inventory below, the default Python versions, and the rows the transform chain contributes: the `3.15` prerelease flagged `unstable`, the free-threaded `3.14t` build pinned to a single runner as a stable smoke test, and `windows-11-arm` dropped on `3.10`.
32+
The grid above is the built-in default plus this repository's own probe. The default supplies the six runners from the inventory below, the default Python versions, and the rows the transform chain contributes: the `3.15` prerelease flagged `unstable`, the free-threaded `3.14t` build pinned to a single runner as a stable smoke test, and `windows-11-arm` dropped on `3.10`. The two extra `ubuntu-26.04*` columns come from a temporary `[tool.repomatic.test-matrix.*]` override described in [§ Preview images under evaluation](#preview-images-under-evaluation); a project that sets no overrides gets the six-runner default.
3333

3434
The reduced pull-request matrix keeps one runner per OS and two Python versions, for faster feedback:
3535

@@ -142,6 +142,25 @@ The same spirit covers the matrix's other invariants: its lowest Python should e
142142
| [`windows-11-arm`](https://github.com/actions/runner-images/blob/main/images/windows/Windows11-Arm64-Readme.md) | Windows | ARM64 | no | Compute ties `windows-2025`; full-matrix only, for native ARM64 execution coverage. |
143143
| [`windows-2025`](https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-Readme.md) | Windows | x86-64 | yes | Compute tied with `windows-11-arm`; the PR-set Windows pick. |
144144

145+
### Preview images under evaluation
146+
147+
GitHub ships Ubuntu 26.04 as `ubuntu-26.04` and `ubuntu-26.04-arm`, both still in preview. Neither is a `repomatic` default: the shipped runner sets stay on GA images, so no downstream repo inherits a preview image.
148+
149+
This repository probes them on itself through its own `[tool.repomatic]` config, which is the pattern any project can copy:
150+
151+
```toml
152+
[tool.repomatic]
153+
test-matrix.unstable = [
154+
{ "os" = "ubuntu-26.04" },
155+
{ "os" = "ubuntu-26.04-arm" },
156+
]
157+
test-matrix.variations.os = ["ubuntu-26.04", "ubuntu-26.04-arm"]
158+
```
159+
160+
`variations` keeps both images out of the PR matrix, and `unstable` flags every resulting cell `continue-on-error`, so an image still being provisioned never reddens the default branch. Read the two cells differently. `ubuntu-26.04-arm` against `ubuntu-24.04-arm` is a clean base-version comparison: same architecture, same full image. `ubuntu-26.04` has no matching control, because the matrix's x86 Linux runner is the lean `ubuntu-slim`, and comparing those two would credit the base version for the other image's leanness, the confound [§ Architecture speed is workload-dependent](#architecture-speed-is-workload-dependent) warns about. Treat the x86 cell as a compatibility signal rather than a speed measurement.
161+
162+
Accumulate timings with the [§ Measuring your own](#measuring-your-own) recipe. The question to settle before these images reach GA is whether `ubuntu-24.04-arm` should give way to `ubuntu-26.04-arm` as the default single-runner pick, which would also move the PR Linux slot, the `3.14t` smoke test, and the `linux-arm64` Nuitka build host.
163+
145164
### Speed tendencies
146165

147166
Relative speed is workload-dependent, so the only authoritative numbers are your own. The tendencies below come from `repomatic`'s own full test suite, taken as the median across the five most recent successful runs on all six runners. Two numbers matter and can disagree: **job wall-clock** (the `startedAt`/`completedAt` delta, what you pay in CI minutes) and **compute** (just the test-execution steps, with checkout and environment setup stripped out). When they diverge, a non-compute step is the cause.

pyproject.toml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,20 @@ pypi-package-history = [ "gha-utils", "repokit" ]
535535
# marketplace at .claude-plugin/marketplace.json installs the plugin straight
536536
# from this asset, so a release missing it breaks `/plugin install`.
537537
release-assets = [ "repomatic-claude-plugin.zip" ]
538+
# Test-drive GitHub's preview Ubuntu 26.04 images on this repository only: the
539+
# shipped defaults in repomatic/matrix_axes.py stay on GA images, so no
540+
# downstream repo inherits a preview. Both cells run continue-on-error, so a
541+
# preview breaking never reddens main, and neither joins the PR matrix.
542+
# `ubuntu-26.04-arm` against `ubuntu-24.04-arm` is the comparison worth
543+
# reading: same architecture, same full image, only the base version differs.
544+
# `ubuntu-26.04` has no matching control, the matrix's x86 Linux runner being
545+
# the lean `ubuntu-slim`, so it measures compatibility rather than speed.
546+
# See docs/test-matrix.md § Preview images under evaluation.
547+
test-matrix.unstable = [
548+
{ os = "ubuntu-26.04" },
549+
{ os = "ubuntu-26.04-arm" },
550+
]
551+
test-matrix.variations.os = [ "ubuntu-26.04", "ubuntu-26.04-arm" ]
538552

539553
[tool.actionlint]
540554
# actionlint reads no pyproject section of its own: repomatic serializes this one

tests/test_metadata.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -797,6 +797,9 @@ def _tracked_inventory(
797797
},
798798
]),
799799
},
800+
# The two ubuntu-26.04 runners and their unstable includes are this
801+
# repository's own `[tool.repomatic] test-matrix` probe of GitHub's preview
802+
# images, not a shipped default. Drop them here when the probe ends.
800803
"test_matrix": {
801804
"os": [
802805
"ubuntu-24.04-arm",
@@ -805,6 +808,8 @@ def _tracked_inventory(
805808
"macos-26-intel",
806809
"windows-11-arm",
807810
"windows-2025",
811+
"ubuntu-26.04",
812+
"ubuntu-26.04-arm",
808813
],
809814
"python-version": [
810815
"3.10",
@@ -815,6 +820,8 @@ def _tracked_inventory(
815820
{"state": "stable"},
816821
{"state": "unstable", "python-version": "3.15"},
817822
{"os": "ubuntu-24.04-arm", "python-version": "3.14t", "state": "stable"},
823+
{"os": "ubuntu-26.04", "state": "unstable"},
824+
{"os": "ubuntu-26.04-arm", "state": "unstable"},
818825
],
819826
"exclude": [
820827
{"os": "windows-11-arm", "python-version": "3.10"},

0 commit comments

Comments
 (0)