Skip to content

Single UI container image — design spec and implementation plan#2024

Open
xrajesh wants to merge 2 commits into
openshift:mainfrom
xrajesh:xav/2026-06-02
Open

Single UI container image — design spec and implementation plan#2024
xrajesh wants to merge 2 commits into
openshift:mainfrom
xrajesh:xav/2026-06-02

Conversation

@xrajesh
Copy link
Copy Markdown
Contributor

@xrajesh xrajesh commented Jun 2, 2026

Summary

  • Design spec and implementation plan for shipping a single OLS UI container image that works for all OCP versions (4.16–4.25)
  • Replaces the current three-image approach (lightspeed-console-plugin, lightspeed-console-plugin-pf5, lightspeed-console-plugin-4-19)
  • Uses git submodules to bring pattern-fly-5 and release-4.19 branch code into main, a multi-stage Dockerfile, and an entrypoint script that symlinks the correct build based on OCP_VERSION env var

Files

  • docs/superpowers/specs/2026-06-02-single-ui-image-design.md — design spec
  • docs/superpowers/plans/2026-06-02-single-ui-image.md — implementation plan

Test plan

  • Review design spec for completeness and correctness
  • Review implementation plan for feasibility
  • Verify Konflux submodule + multi-directory Cachi2 prefetch approach with Konflux team

🤖 Generated with Claude Code

Summary by CodeRabbit

Documentation

  • Added implementation plan and design specification for consolidating the OpenShift Lightspeed console plugin into a single unified container image supporting multiple OpenShift cluster versions.

xrajesh and others added 2 commits June 2, 2026 09:59
Ship one OLS UI image containing builds for all OCP versions instead of
three separate images. Uses git submodules for hermetic Konflux builds,
multi-stage Dockerfile, and entrypoint-based version switching.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
8 tasks covering: submodule setup, entrypoint, multi-stage Dockerfile,
Konflux pipeline config, operator simplification, and spec updates.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jun 2, 2026

📝 Walkthrough

Walkthrough

This PR adds two documentation files describing a migration from three separate OpenShift-version-specific console UI container images to a single unified image. The design uses an OCP_VERSION environment variable at runtime to select the correct pre-built assets from /builds/, configured via an entrypoint.sh that symlinks them into the nginx web root. The plan includes 8 tasks covering git submodules, entrypoint scripting, multi-stage Dockerfile, CI/CD pipeline updates, operator simplification, environment variable injection, and cleanup.

Changes

Single UI Image Migration

Layer / File(s) Summary
Problem Statement & Architecture Vision
docs/superpowers/specs/2026-06-02-single-ui-image-design.md, docs/superpowers/plans/2026-06-02-single-ui-image.md
Introduces the consolidation goal and high-level approach for moving from three OCP-version-specific console images to a single image that selects assets at startup via OCP_VERSION environment variable.
Design Specification: Build Infrastructure (Entrypoint, Dockerfile, Submodules)
docs/superpowers/specs/2026-06-02-single-ui-image-design.md
Documents the image directory layout (/builds/pf5, /builds/4-19, /builds/main), entrypoint.sh control flow with OCP_VERSION case statement and symlink logic, multi-stage Dockerfile with per-variant build stages and shared runtime, and Git submodule configuration for branches/pf5 and branches/4-19.
Design Specification: Operator & Pipeline Integration
docs/superpowers/specs/2026-06-02-single-ui-image-design.md
Specifies operator changes to use a single console image with OCP_VERSION environment variable injection into the console Deployment, removal of version-based image selection logic, Konflux pipeline npm prefetch for main and submodule directories, and submodule fetching enablement in git-clone tasks.
Implementation Plan: Build Infrastructure Tasks (Tasks 1-4)
docs/superpowers/plans/2026-06-02-single-ui-image.md
Step-by-step tasks for adding git submodules (Task 1), creating entrypoint.sh with version-to-directory mapping (Task 2), replacing Dockerfile with multi-stage builds for each variant (Task 3), and updating Tekton/Konflux pipeline YAML for submodule fetching and cachi2 prefetch expansion (Task 4).
Implementation Plan: Operator Simplification Tasks (Tasks 5-7)
docs/superpowers/plans/2026-06-02-single-ui-image.md
Concrete tasks to remove PF5/4.19 image variables and simplify overrideImages parameters (Task 5), update console deployment to inject OCP_VERSION environment variable from cluster version (Task 6), and clean up image constants and related_images.json references (Task 7).
Implementation Plan: Documentation Updates & Trade-offs (Task 8 & Comparison)
docs/superpowers/plans/2026-06-02-single-ui-image.md, docs/superpowers/specs/2026-06-02-single-ui-image-design.md
Final task to update lightspeed-console project-structure spec documentation with new entrypoint.sh, .gitmodules, and submodule directories; includes a trade-offs table comparing the prior three-image design against the new single-image design across build coordination, Konflux components, operator complexity, and version lifecycle implications.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

Poem

📄 One document becomes two,
Three images merge into blue,
A bunny hops through the plan,
Where OCP_VERSION leads the van,
And trade-offs show the way anew! 🐰

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly summarizes the main change: introducing a design spec and implementation plan for consolidating three container images into a single UI image.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

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

Warning

Tools execution failed with the following error:

Failed to run tools: 13 INTERNAL: Received RST_STREAM with code 2 (Internal server error)


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

@openshift-ci openshift-ci Bot requested review from joshuawilson and kyoto June 2, 2026 14:09
@openshift-ci
Copy link
Copy Markdown

openshift-ci Bot commented Jun 2, 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 kyoto 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

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
docs/superpowers/plans/2026-06-02-single-ui-image.md (1)

1-518: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Remove implementation-plan artifact from docs/superpowers/ before merge to main.

This plan file is a process artifact and should be removed at development-branch completion.

As per coding guidelines, "Remove any process artifacts (design docs, plans) from docs/superpowers/ when finishing a development branch".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/superpowers/plans/2026-06-02-single-ui-image.md` around lines 1 - 518,
The file docs/superpowers/plans/2026-06-02-single-ui-image.md is a
development/process artifact and must be removed before merging to main; delete
that file from the branch, run git rm
docs/superpowers/plans/2026-06-02-single-ui-image.md and commit with a message
like "Remove implementation-plan artifact from docs/superpowers", and ensure
there are no remaining references to it in docs indexes or CI checks (update any
doc index entries if present) before pushing the branch.
docs/superpowers/specs/2026-06-02-single-ui-image-design.md (1)

1-304: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Remove design-spec artifact from docs/superpowers/ before merge to main.

This file is a process artifact under docs/superpowers/specs/ and should not remain when finishing the development branch.

As per coding guidelines, "Remove any process artifacts (design docs, plans) from docs/superpowers/ when finishing a development branch".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/superpowers/specs/2026-06-02-single-ui-image-design.md` around lines 1 -
304, Delete the design-spec artifact titled "# Single UI Container Image for All
OCP Versions" from the branch (remove the file and commit the deletion), ensure
the PR no longer includes this docs/specs file, and update any references or
indexes that listed it; then re-run CI and push the updated branch so the merge
to main excludes the process artifact.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@docs/superpowers/plans/2026-06-02-single-ui-image.md`:
- Around line 1-518: The file
docs/superpowers/plans/2026-06-02-single-ui-image.md is a development/process
artifact and must be removed before merging to main; delete that file from the
branch, run git rm docs/superpowers/plans/2026-06-02-single-ui-image.md and
commit with a message like "Remove implementation-plan artifact from
docs/superpowers", and ensure there are no remaining references to it in docs
indexes or CI checks (update any doc index entries if present) before pushing
the branch.

In `@docs/superpowers/specs/2026-06-02-single-ui-image-design.md`:
- Around line 1-304: Delete the design-spec artifact titled "# Single UI
Container Image for All OCP Versions" from the branch (remove the file and
commit the deletion), ensure the PR no longer includes this docs/specs file, and
update any references or indexes that listed it; then re-run CI and push the
updated branch so the merge to main excludes the process artifact.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: b55c117f-5b51-4e62-b81b-914269e99a13

📥 Commits

Reviewing files that changed from the base of the PR and between f62f15c and 10adf30.

📒 Files selected for processing (2)
  • docs/superpowers/plans/2026-06-02-single-ui-image.md
  • docs/superpowers/specs/2026-06-02-single-ui-image-design.md

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant