feat: selective-molecule-ci - #4152
Conversation
|
recheck |
4 similar comments
|
recheck |
|
recheck |
|
recheck |
|
recheck |
Selective Molecule CI timing resultsThis branch directly builds on the parallel deployment work: its merge-base with Full CI comparison
The original Open vSwitch job took 1h35m56s and OVN took 1h58m49s. Full-fallback acceleration comes primarily from the inherited parallel orchestrator and role splits. The selective planner's larger gain comes from avoiding a full deployment for scoped changes. These historical runs used different repository states and infrastructure dates, so they are strong operational measurements but not a controlled A/B benchmark. In particular, the current combined full fallback is 12m36s slower than the historical parallel-only run. Selective resultsCompared with the successful 1h59m04s original full cycle:
The first Horizon attempt exposed an incomplete focused environment: Tempest lands on Horizon's project Overview panel, which requires Compute. The planner now includes Nova's image, network, placement, and libvirt requirements for Horizon while still omitting Cinder, Heat, Octavia, Manila, Magnum, and other unrelated services. The rerun passed deployment, idempotence, and Tempest dashboard verification. The first Heat attempt exposed that Tempest did not trust the self-signed public ClusterIssuer. The next attempt proved the issuer CA was copied correctly but exposed an unrelated TLS injection into the internal HTTP Keystone bootstrap hook. The final run kept that hook on its internal endpoint, mounted the original issuer CA only into the Tempest test job, completed deployment and idempotence, and ran 119 smoke tests: 105 passed, 14 skipped, and 0 failed. Public Heat endpoint discovery completed with certificate verification enabled. |
a1f6d4a to
166c749
Compare
|
recheck |
dcec5c0 to
16c26cb
Compare
Signed-off-by: Tadas Sutkaitis <tadas.sutkaitis@vexxhost.com>
16c26cb to
7928fa3
Compare
Signed-off-by: Tadas Sutkaitis <tadas.sutkaitis@vexxhost.com>
Signed-off-by: Tadas Sutkaitis <tadas.sutkaitis@vexxhost.com>
Pure-
|
| Job | Result | Duration |
|---|---|---|
| AIO Open vSwitch | passed | 2h04m16s |
| AIO OVN | passed | 1h59m41s |
| local-path CSI | passed | 7m37s |
| RBD CSI | passed | 18m36s |
| Keycloak | passed | 23m54s |
Full-cycle comparison
| Implementation | Wall time | Executor time | Change vs. original |
|---|---|---|---|
| Original sequential CI | 1h59m04s | 4h22m36s | baseline |
| Parallel orchestrator | 59m54s | 2h37m10s | 49.7% faster |
Pure-main selective CI, full fallback |
2h04m16s | 4h54m04s | 4.4% slower |
The full fallback is intentionally the standard sequential main deployment, so it is not expected to be faster. This PR's own CI-policy and runner changes correctly trigger that conservative fallback. The expected savings come from scoped service changes that omit unrelated roles and tests.
This run validates that:
- the implementation is independent from the Parallel orchestrator;
- all standard AIO, CSI, and Keycloak lifecycles still pass;
- full fallback remains safe;
- both AIO jobs now finish beyond the previous 7,000-second command limit;
- the RBD job retains
CEPH_CONTAINER_IMAGEandCEPH_CONTAINER_BINARY.
Remaining work
- Fix the GitHub Actions
pre-commitfailure. All hooks pass except Black, which reformats one dictionary comprehension intests/unit/ci/test_molecule_plan.py. - Measure pure-
mainselective service runs using dependent test PRs based on this branch. CI-runner changes in this PR always select full fallback, so a separate PR is required to exercise real Glance, Cinder, Nova, Horizon, Heat, and other scoped plans. - Use those runs to publish authoritative per-service speed improvements. The older selective timing table came from the earlier Parallel orchestrator-based prototype and should not be treated as performance evidence for this pure-
mainimplementation.
Signed-off-by: Tadas Sutkaitis <tadas.sutkaitis@vexxhost.com>
Signed-off-by: Tadas Sutkaitis <tadas.sutkaitis@vexxhost.com>
Signed-off-by: Tadas Sutkaitis <tadas.sutkaitis@vexxhost.com>
Signed-off-by: Tadas Sutkaitis <tadas.sutkaitis@vexxhost.com>
Signed-off-by: Tadas Sutkaitis <tadas.sutkaitis@vexxhost.com>
Signed-off-by: Tadas Sutkaitis <tadas.sutkaitis@vexxhost.com>
Signed-off-by: Tadas Sutkaitis <tadas.sutkaitis@vexxhost.com>
Signed-off-by: Tadas Sutkaitis <tadas.sutkaitis@vexxhost.com>
Signed-off-by: Tadas Sutkaitis <tadas.sutkaitis@vexxhost.com>
Selective CI validation matrix — finalValidated on the pure- Coverage summary
Full isolated-component matrix
Mixed-component evidence
An additional Glance + Keystone pair passed in 43m59s. Final fallback on
|
| Job | Result | Duration |
|---|---|---|
| AIO Open vSwitch | ✅ | 2h08m37s |
| AIO OVN | ✅ | 2h02m41s |
| CSI RBD | ✅ | 19m15s |
| CSI local-path | ✅ | 8m16s |
| Keycloak | ✅ | 21m01s |
Final fallback wall time was 2h08m37s because the jobs run concurrently.
Speed compared with the existing ~90-minute baseline
| Change scope | Observed time | Approximate saving |
|---|---|---|
| Small host roles | 3m55s–8m29s | 91–96% |
| Foundation services | 18m30s–35m40s | 60–79% |
| Keystone / Placement / Barbican | 38m01s–40m19s | 55–58% |
| Glance | 44m50s | 50% |
| Cinder | 53m10s | 41% |
| Horizon | 1h03m15s | 30% |
| Heat / Neutron / Nova | 1h05m59s–1h08m50s | 24–27% |
| Manila | 1h15m11s | 16% |
| Octavia | 1h29m38s | effectively neutral |
| Magnum | 1h33m52s | slightly slower |
| Conservative full fallback | 2h08m37s | deliberately slower; only for unbounded/shared changes |
The useful result is not that every target is fast: dependency-heavy Octavia and Magnum genuinely need almost the whole cloud. The gain is that most component changes avoid unrelated services, while ambiguous/shared changes remain conservative.
One non-Zuul GitHub Actions image/build check is red because Ansible Galaxy returned a downloaded artifact whose hash did not match. That is an external, retryable download failure; all other GitHub code checks and the complete Zuul runtime matrix passed.
Mohammed Naser (mnaser)
left a comment
There was a problem hiding this comment.
Could we split the non-CI runtime changes out before continuing with the selective CI implementation? These are useful fixes, but they change production role behavior independently from test selection and should be reviewed, released, and backported on their own.
In particular, I think these should become several independently mergeable PRs:
- RabbitMQ transient deployment retries (
356f2a98). - Octavia quota-request retries (
8868a471). - Namespace and service-scope self-containment fixes for Keepalived, Ceph provisioners, IPMI exporter, Valkey, and Rook Ceph cluster (
5a0de044,3082f3b9,c5970093, and7f2d3b82). These can be split further by role where appropriate. - The Rook Ceph cluster identity-management SDK rewrite (
effb1f51). - The Keycloak, Neutron, Nova, Octavia, and Manila timeout/default changes. Please separate these by independently backportable concern rather than keeping them in the CI feature PR.
For each extracted fix PR, please check which stable branches contain the affected code and add the applicable backport stable/<branch> labels. The repository currently has labels from backport stable/zed through backport stable/2025.2; the exact cutoff can differ per fix.
Ideally those fixes can land first and this PR can then rebase on them, leaving #4152 focused on the selector, policy, scheduler filters, and selective verification behavior.
No description provided.