Repository navigation
Description
Summary
Implement the install-side analog of hack/select-e2e.sh: a diff-driven selector that, given the app(s) a PR touches, computes the minimal set of packages to install for the E2E run — instead of always provisioning the full isp-full platform. This is the concrete implementation of Track A of the diff-driven E2E epic (#2847).
Today select-e2e.sh already scopes which Chainsaw suites run by walking the PackageSource dependsOn graph (reverse direction). The install still brings up the whole platform. Scoping the install to just what the selected suites need is the remaining half.
Key design decisions
- Reuse the real
dependsOngraph inpackages/core/platform/sources/*.yaml— no parallelinstall.deps/ per-app*.depsfiles. Single source of truth; mirrorsselect-e2e.sh, walked in the forward direction. dependsOnis install-ordering + readiness-gating only (seeinternal/operator/package_reconciler.go,buildDependsOn/areDependenciesReady) — it does not auto-install a dependency. So the enabled set must be the full explicit forward closure (app + every transitive dep), not just the leaf app.- Unlike the reverse (test-selection) walk, the forward (install) walk keeps the
cozystack.cozystack-engineordering edge — for install it is a genuine prerequisite.
Tasks
-
hack/select-install.sh— forwarddependsOnclosure over thePackageSourcegraph; input = target app suite(s), output = minimal package-name set -
hack/select-install_test.bats— unit tests (single app, transitive chain, cycle, unknown source), run viahack/cozytest.sh - dependency-graph validator — reachability + cycle check against the real sources (fail if a source depends on a non-existent package)
-
test-minimalplatform variant / bundle definition — the minimal always-on base (networking, engine, storage) that the closure layers onto viabundles.enabledPackages(needs a platform-variant design decision — see note) - wire the selector +
test-minimalbundle into thepull-requests.yamlE2E install step
Sequencing
The selector + tests + validator are self-contained and land first (one PR). The test-minimal variant and the CI install-step wiring depend on a platform-variant design decision and land as a defined follow-up.
References
- Parent epic: [Epic] Diff-driven & scenario-based E2E testing for Cozystack #2847 (Track A)
- Test-selection prerequisite already merged: feat(ci): test-impact analysis E2E (default-on) + release E2E workflow #2559 (
select-e2e.sh+e2e-tialabel) - Composes with test(e2e): lightweight E2E cluster (kind / Talos-in-Docker) for diff-scoped PR runs #3238 (lightweight E2E cluster): [Epic] Diff-driven & scenario-based E2E testing for Cozystack #2847 Track A makes the install minimal; test(e2e): lightweight E2E cluster (kind / Talos-in-Docker) for diff-scoped PR runs #3238 makes the cluster minimal — two independent axes.
Activity
myasnikovdaniil commentedon Jul 13, 2026
Superseded by the global CI tracking issue #3278. The install-selector detail (Track A of #2847) lives there as A8/A9.