Repository navigation
Run Lean jobs without CCF build dependencies on GitHub-hosted Ubuntu - #8723
Open
Amaury Chamayou (achamayou) wants to merge 1 commit into
Open
Amaury Chamayou (achamayou) wants to merge 1 commit into
Amaury Chamayou (achamayou) wants to merge 1 commit into
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Amaury Chamayou (achamayou)
force-pushed
the
achamayou-lean-jobs-ubuntu-runners
branch
from
November 10, 2026 20:48
5a71d03 to
7df3a1a
Compare
Amaury Chamayou (achamayou)
marked this pull request as ready for review
November 10, 2026 21:27
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues block the Lean runner migration.
No open issues 🎉
What changed in this PR
Moves Lean jobs that do not build CCF to GitHub-hosted Ubuntu 26.04 runners, building on the Mathlib dependency removal in #8702 to reduce VMSS usage.
Changes:
- Runs package checks, trace replays, and Mathlib equivalence checks directly on hosted runners; CCF trace capture stays on VMSS.
- Simplifies prerequisite installation, removes container-only setup, and versions dependency caches for the new environment.
- Updates workflow documentation to describe the runner split.
Custom instructions used
Applied the CCF repository instructions supplied in the review context; no additional instruction files were loaded.
| File | Description |
|---|---|
.github/workflows/README.md |
Documents hosted Lean jobs and retained VMSS trace capture jobs. |
.github/workflows/lean.yml |
Moves three trace replay jobs to hosted runners and simplifies setup. |
.github/workflows/lean-package.yml |
Migrates reusable package checks and updates their dependency cache key. |
.github/workflows/lean-mathlib-equivalence.yml |
Migrates equivalence checks and updates their dependency cache key. |
Review effort: Balanced
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Now that the Lean packages no longer depend on Mathlib (#8702), the Lean jobs that do not build CCF no longer need 1ES VMSS runners for disk space or download size. This PR moves them to GitHub-hosted
ubuntu-26.04runners, running directly on the runner image rather than in anubuntu:26.04container:lean-package.yml, previously ongha-vmss-d16av7-ci)lean.yml(previously ongha-vmss-d16av7-ci-b)lean-mathlib-equivalence.yml, previously ongha-vmss-d16av7-ci)The three trace capture jobs build CCF, so they stay on
gha-vmss-d16av7-ci-cin Azure Linux containers.Performance of the final setup, in short:
consensuspackage check, goes from 286s to 408s.Results
"Hosted" is this PR, rebased on
mainafter #8702: run 42898835830, attempt 1 (cold dependency cache) and the median of attempts 2-4 (warm). "VMSS" is the median of the 9 successful Lean runs on other PRs between #8702 merging (17:30 UTC on 10 November) and 19:00 UTC, which usemain's Mathlib-free workflow through the merge ref: 42878771730, 42877971914, 42875441255, 42873405288, 42872326595, 42869599660, 42868679979, 42868511259 and 42868249176. A 10th run in that window, 42874335802, is excluded because its merge ref still included Mathlib.All times below are job run times, from the job starting on a runner to it completing.
Run time per moved job
The VMSS runs are each PR's first run, so some started with a cold dependency cache. Their "Check formatting" step, which builds leanfmt when it is not cached, took a median of 23-28s, against 5-19s on hosted warm runs and 45-60s on the hosted cold run.
The trace capture jobs, which stay on VMSS, took 132-256s on this PR and 140-284s in the VMSS runs.
Where the time goes
The package checks are slower because
lake check, which builds the package and then re-checks its whole import closure in the kernel, gets fewer cores. Medians of "Build, kernel and axiom check":Setup costs about the same. The hosted runner image already has Git, a C toolchain, curl, jq and zstd, so the jobs only
apt-get installelan (pluspython3-jsonschemafor the package checks), in 6-16s. On VMSS, the container prerequisites took 11-15s, plus container start and stop. Installing the Lean toolchain takes 11-16s on hosted runners.Mathlib equivalence
This job runs only when the Mathlib replacements or the equivalence package change, so there are no recent VMSS runs to compare with. The VMSS figures are from #8702 (run 42703294871), which ran the same workflow.
Mathlib's dependency checkouts and build cache fit on the hosted runner's disk.
Changes
lean-package.yml,lean-mathlib-equivalence.ymland the three replay jobs inlean.ymluseruns-on: ubuntu-26.04with no container, and install elan withsudo apt-get. They no longer setELAN_HOMEorsafe.directory, which were only needed when running as root in a container.lean-deps-v2-vmss-ubuntu-26.04-...tolean-deps-v3-ubuntu-26.04-..., so hosted runs do not restore caches built in the containers..github/workflows/README.mddescribes which Lean jobs use VMSS and which use hosted runners.No Lean sources, C++ or test logic change.
Validation
prettier --checkon the changed workflows passed, and the changed files are ASCII-only.