Skip to content

HYPERFLEET-796 - docs: Design proposal consolidating the e2e and infr…#148

Draft
ma-hill wants to merge 3 commits into
openshift-hyperfleet:mainfrom
ma-hill:HYPERFLEET-1056
Draft

HYPERFLEET-796 - docs: Design proposal consolidating the e2e and infr…#148
ma-hill wants to merge 3 commits into
openshift-hyperfleet:mainfrom
ma-hill:HYPERFLEET-1056

Conversation

@ma-hill
Copy link
Copy Markdown
Contributor

@ma-hill ma-hill commented May 28, 2026

Summary

Adds a comprehensive design proposal for consolidating duplicated component installation logic between hyperfleet-infra and hyperfleet-e2e repositories. Currently, both repos maintain separate deployment codebases (1940 lines of bash scripts in E2E, ~824 lines of Makefile in infra) that deploy the same HyperFleet stack, leading to configuration drift and maintenance overhead. This proposal recommends adopting a unified Helmfile approach with a config-passing pattern where the helmfile repository contains only deployment logic, while each consuming repo owns and passes its own adapter and sentinel configurations via Makefile parameters.

Notes

This design proposal addresses HYPERFLEET-796 and builds on findings from the HYPERFLEET-1007 spike. The spike originally recommended a Makefile-only approach, but this proposal recommends Helmfile based on its declarative benefits, drift detection capabilities (helmfile diff), and cleaner separation between deployment logic (helmfile) and configuration data (each repo's configs).

The key innovation is the config-passing pattern: the helmfile repository contains only deployment logic with no hardcoded paths or repo-specific configurations. Each consuming repo (hyperfleet-infra, hyperfleet-e2e, future staging/perf repos) owns its own adapter and sentinel configs and passes them to helmfile via Makefile parameters. This makes the helmfile truly portable and eliminates the need to PR to the helmfile repo when adding test-specific adapters.

Jira Issue

HYPERFLEET-796

@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented May 28, 2026

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented May 28, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign aredenba-rh for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 28, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Central YAML (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 4cc6a67f-3f2d-4fd9-ae31-9965ee5174ac

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@ma-hill ma-hill force-pushed the HYPERFLEET-1056 branch from 0a92c5f to dc23f50 Compare May 28, 2026 16:12
@ma-hill ma-hill force-pushed the HYPERFLEET-1056 branch from dc23f50 to 813dcab Compare May 28, 2026 16:14
Copy link
Copy Markdown
Contributor

@ciaranRoche ciaranRoche left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really nice work on this, my main concern is introducing another location here. Given we only really have 2 consumers infra and e2e. I worry if its potentially overkill, when we could just leverage the infra repo to deploy e2e infra 🤔

```

**Impact**:
- ✅ `helmfile diff` shows drift between desired and actual state (bash has no equivalent)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As our deployments are essentially ep[hemeral per run, how often do you think we would actually use helmfile diff?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably not much. I guess I've just been using it for setting this up.

```

**Benefits**:
- ✅ True single source of truth - helmfile lives in one canonical location
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given we have only two real consumers, infra and e2e, having this single source of truth in a third location might be overkill. We tried something similar in the past with https://github.com/openshift-hyperfleet/hyperfleet-chart but ended up moving to infra to reduce cost and duplication.

Might be worth looking how infra charts can own this canonical location. WDYT?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah that makes sense... I didn't have the history on that. So that's good to know. So you are more on board with having everything in infra, and all setup comes from there?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So should we just continue to clone the infra repo and go from there? But we should be able to pass in new e2e configs?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants