Repository navigation
ci(e2e): start Linux and tmachine jobs without waiting on macOS or package builds - #5270
Open
matthewgrossman wants to merge 3 commits into
Open
matthewgrossman wants to merge 3 commits into
matthewgrossman wants to merge 3 commits into
Conversation
matthewgrossman
requested review from
a team,
derekwaynecarr,
mrunalp and
sjenning
as code owners
November 4, 2026 18:59
|
Label |
Branch E2E built the macOS binaries in the same reusable workflow call as the Linux binaries, so every Linux consumer waited for the macOS runners. Add linux and macos inputs to build-binaries and build-vm-driver, and call them separately in Branch E2E. The result jobs still depend on the macOS builds, so a macOS build failure still fails them. Release workflows keep both inputs at their defaults. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
Prepare tmachine inputs built the test archives, test workload images, and Helm chart after the DEB and RPM builds finished, which added about three minutes before any tmachine suite could start. None of them use the packages. Build them in a Branch E2E job that needs only PR metadata, and let prepare download the result through a new test-inputs-artifact-name input. Other callers of prepare-integration-inputs leave the input empty and still build in place with the same steps. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
matthewgrossman
force-pushed
the
ci/5268-branch-e2e-start-earlier/matthewgrossman
branch
from
November 4, 2026 19:11
3b4bd97 to
1aa0327
Compare
Branch E2E used flags on the shared build workflows to keep Linux and macOS apart. Make each platform its own reusable workflow instead, with a plain matrix, so a consumer depends only on the platforms it needs and adding a platform means adding a workflow rather than another flag. Move the VM driver build steps shared by both platforms into a composite action. Release workflows call both platforms and keep their existing gating. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
4 tasks
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
Branch E2E Linux jobs were waiting on macOS builds they don't use, and the tmachine test inputs were built only after the packages finished.
Builds were one matrix per workflow, covering Linux and macOS, and a
needs:dependency waits for every leg of a matrix. macOS runners often queue much longer than Linux builds take, so Linux finished early and then sat idle before E2E could start. In the 8 Branch E2E runs before this change, macOS finished after Linux in 5, holding Linux consumers back by 4 to 14 minutes (mean about 8.5).This PR makes each platform its own workflow, so Linux consumers depend on Linux builds and macOS jobs depend on macOS builds. Adding Windows later means adding a workflow, not another flag or matrix branch. It also builds the tmachine test inputs at the start of the run. In an earlier Branch E2E run of this PR, this saved about 7 minutes on the critical path: about 4 from not waiting for macOS and about 3 from building the test inputs early. The macOS part grows when macOS runners queue. Timings are under Testing.
Related Issue
Closes #5268
Changes
build-binaries.ymlandbuild-vm-driver.ymlare replaced by per-platform workflows:build-binaries-linux.yml,build-binaries-macos.yml,build-vm-driver-linux.ymlandbuild-vm-driver-macos.yml. Each has a plain matrix over its platform's targets, with no platform flags or conditionals. Job names and artifact names are unchanged..github/actions/build-vm-driver.build-binaries-linuxandbuild-vm-driver-linuxreplacebuild-binariesandbuild-vm-driveras the dependencies of the Linux host lanes.build-binaries-macosandbuild-vm-driver-macosbuild macOS, and the macOS VM driver also needs the Linux musl binaries.Core E2E resultdepends on both macOS jobs.GPU E2E resultand the Kubernetes result jobs depend onbuild-binaries-macos. A macOS build failure still fails them, as it does today.fail-fast: false. The four darwin builds used to be separate jobs, so one failure didn't cancel the others, and this keeps it that way.Build tmachine test inputsneeds only PR metadata. It runs the same three Nix builds as prepare (test archives, test workload images, Helm chart) on a GitHub-hosted runner and uploadsopenshell-tmachine-test-inputs.prepare-integration-inputs.ymltakestest-inputs-artifact-name. When it's set, prepare skips Nix setup and downloads the inputs. Otherwise it runs its original build steps unchanged. The build steps stay inline rather than in a local composite action because prepare checks out the candidate commit, and older candidates (for example, a re-qualified prerelease tag) wouldn't contain that action. Theopenshell-tmachine-inputslayout is unchanged.build-binariesorbuild-vm-driverdepends on both platforms, so release gating is unchanged. Release Qualification, Pre-release and Integration Tests are unchanged. ci: start Release Dev Linux jobs without waiting on macOS builds #5269 tracks applying the Linux-first dependency changes to Release Dev.Testing
Checked items and timings ran against the earlier version of this PR (platform flags on the shared workflows), which has the same Branch E2E dependency graph. Unchecked items cover the per-platform split.
concurrency.queuefindings are in untouched files)--persona=regular --min-severity=high): same 13 findings asmainmise run markdown:lintmain)Timings
Times are minutes from the start of the run. Runner load differs between runs, so the fairest comparison is this PR's run against the same run replayed through the old dependency graph. The replay keeps each job's measured queue time and duration and changes only what it waits for.
Build tmachine test inputsfinished at 3:53, long before the packages.Checklist