You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ci(test): separate e2e families from driver target variants - #4541
Separate end-to-end execution into conformance, features, and drivers families while retaining existing runners, target combinations, and required/optional/advisory policies. Driver harnesses can execute conformance or runtime suites independently, with combined execution retained for existing local commands.
The focused issue has no acceptance label; the author has verified ADMIN access to this repository.
Changes
Add shared family workflows that call driver workflows directly, with matrices for regular/external variants and Kubernetes configurations. Driver workflows retain nested scenario matrices. Remove the intermediate runtime-selector workflow. Branch and release callers reuse the families; required core/GPU result names remain unchanged. Optional profiles retain separate calls and gate policies.
Expose provider-refresh and OCI-image separately within Features, retaining all five existing target combinations and separate concurrency groups.
Treat bundled/external drivers as target variants. External VM retains both conformance and its five runtime test binaries; external Docker, Podman, and Kubernetes retain conformance-only execution in CI.
Preserve the package/HA integration matrices, all six Docker suites, the Podman CI allowlist and tmachine coverage, Kubernetes versions and namespace modes, GPU architectures, and advisory WSL behavior. Mixed legacy runtime suites remain under Drivers pending later extraction.
Reject empty driver-suite selections. Avoid exporting an empty Kubernetes workflow input over the harness defaults while preserving the external-driver task's explicit empty feature list.
Require every selected runtime job and the overall Drivers family to succeed. Retain per-runtime release-summary fields and add the aggregate driver-family result.
Document the execution split and add focused regression checks without moving Rust test sources or broadening the release profile.
Testing
Pre-commit checks, including the commit hook inside dev-openshell shell.
mise run --skip-tools test:e2e-lanes: 91 checks for dispatch, failure propagation, preserved matrices, and gate compatibility.
Compared all 28 expanded runtime invocations against the preceding implementation: identical runners, artifact inputs, fixtures, defaults, commands, and suite matrices.
mise run --skip-tools test:qualification-summary, including failed/cancelled/skipped family cases.
Actionlint on all changed workflows; ShellCheck on changed shell scripts; Ruff, Markdown lint, staged whitespace checks, and agent-infrastructure consistency checks.
dev-openshell shell -- bash -c 'cd "$OPENSHELL_HOME" && exec mise run --skip-tools ci': failed at the unchanged gateway test signals_stop_probe_wrapper_and_descendants_before_cli_exit (probe descendant ready: Elapsed(()), crates/openshell-gateway/tests/config_preflight.rs:226). The earlier plain-shell attempt also lacked Z3 linkage; the requested environment resolves that dependency. The exact gateway test subsequently passed in isolation through dev-openshell shell -- mise exec -- cargo test -p openshell-gateway --test config_preflight signals_stop_probe_wrapper_and_descendants_before_cli_exit -- --exact --nocapture; that diagnostic result does not replace the failed full run.
E2E on the preceding revision failed in the two Kubernetes driver-specific version lanes. The v1beta1 lane ran 101 tests: 100 passed and canonical_main_connect_recovers_its_ssh_transport timed out waiting for SSH reattachment. This remains unresolved; the workflow restructuring does not change those assertions or suppress the failures.
Live E2E on the updated matrix structure, dispatched on commit e21c1a8d921317d2c7df7b0326ed6750acbd9b19. Manual dispatch selects core and GPU coverage; optional Kubernetes HA/credential profiles remain unverified. The PR remains a draft until coverage evidence is reviewed.
Splitting previously combined runtime jobs provisions a fresh target for each family and adds setup work. The change does not claim that collected or stubbed tests establish live target correctness.
Label test:e2e applied, but pull-request/4541 does not exist yet. A maintainer needs to comment /ok to test 23f7d5d51c76b5ae3d46d039c3675e44851a6923 to mirror this PR. Once the mirror exists, re-apply the label or re-run Branch E2E Checks from the Actions tab.
Label test:e2e-gpu applied, but pull-request/4541 does not exist yet. A maintainer needs to comment /ok to test 23f7d5d51c76b5ae3d46d039c3675e44851a6923 to mirror this PR. Once the mirror exists, re-apply the label or re-run Branch E2E Checks from the Actions tab.
Label test:e2e-kubernetes applied, but pull-request/4541 does not exist yet. A maintainer needs to comment /ok to test 23f7d5d51c76b5ae3d46d039c3675e44851a6923 to mirror this PR. Once the mirror exists, re-apply the label or re-run Branch E2E Checks from the Actions tab.
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
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
Separate end-to-end execution into conformance, features, and drivers families while retaining existing runners, target combinations, and required/optional/advisory policies. Driver harnesses can execute conformance or runtime suites independently, with combined execution retained for existing local commands.
Related Issue
Closes #4540. Part of #3954 and RFC-0016 (#3460).
The focused issue has no acceptance label; the author has verified ADMIN access to this repository.
Changes
Testing
dev-openshell shell.mise run --skip-tools test:e2e-lanes: 91 checks for dispatch, failure propagation, preserved matrices, and gate compatibility.mise run --skip-tools test:qualification-summary, including failed/cancelled/skipped family cases.dev-openshell shell -- bash -c 'cd "$OPENSHELL_HOME" && exec mise run --skip-tools ci': failed at the unchanged gateway testsignals_stop_probe_wrapper_and_descendants_before_cli_exit(probe descendant ready: Elapsed(()),crates/openshell-gateway/tests/config_preflight.rs:226). The earlier plain-shell attempt also lacked Z3 linkage; the requested environment resolves that dependency. The exact gateway test subsequently passed in isolation throughdev-openshell shell -- mise exec -- cargo test -p openshell-gateway --test config_preflight signals_stop_probe_wrapper_and_descendants_before_cli_exit -- --exact --nocapture; that diagnostic result does not replace the failed full run.canonical_main_connect_recovers_its_ssh_transporttimed out waiting for SSH reattachment. This remains unresolved; the workflow restructuring does not change those assertions or suppress the failures.e21c1a8d921317d2c7df7b0326ed6750acbd9b19. Manual dispatch selects core and GPU coverage; optional Kubernetes HA/credential profiles remain unverified. The PR remains a draft until coverage evidence is reviewed.Splitting previously combined runtime jobs provisions a fresh target for each family and adds setup work. The change does not claim that collected or stubbed tests establish live target correctness.
Checklist