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
dependsOn graph in packages/core/platform/sources/*.yaml — no parallel install.deps / per-app *.deps files. Single source of truth; mirrors select-e2e.sh, walked in the forward direction.
dependsOn is install-ordering + readiness-gating only (see internal/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-engine ordering edge — for install it is a genuine prerequisite.
Tasks
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
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 fullisp-fullplatform. This is the concrete implementation of Track A of the diff-driven E2E epic (#2847).Today
select-e2e.shalready scopes which Chainsaw suites run by walking thePackageSourcedependsOngraph (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
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.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 sethack/select-install_test.bats— unit tests (single app, transitive chain, cycle, unknown source), run viahack/cozytest.shtest-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)test-minimalbundle into thepull-requests.yamlE2E install stepSequencing
The selector + tests + validator are self-contained and land first (one PR). The
test-minimalvariant and the CI install-step wiring depend on a platform-variant design decision and land as a defined follow-up.References
select-e2e.sh+e2e-tialabel)