Skip to content

Add component deployment to Kind/Minikube and OpenShift/K8s clusters (CRW-10962) - #5957

Open
vrubezhny wants to merge 1 commit into
redhat-developer:mainfrom
vrubezhny:feature/image-build-support
Open

Add component deployment to Kind/Minikube and OpenShift/K8s clusters (CRW-10962)#5957
vrubezhny wants to merge 1 commit into
redhat-developer:mainfrom
vrubezhny:feature/image-build-support

Conversation

@vrubezhny

@vrubezhny vrubezhny commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a complete deploy pipeline that builds container images and
deploys them to Kind, Minikube, OpenShift, and generic Kubernetes
clusters — all from the OpenShift terminal.

Key changes

  • Cluster-aware deploy pipeline: Detects cluster type and handles
    image delivery accordingly — local load for Kind/Minikube, registry
    push for OpenShift/K8s
  • Container runtime detection: Finds available runtime
    (podman > docker > buildah) with build, tag, push, and load commands
  • Registry selection QuickPick: Prompts user to select a registry
    (quay.io, docker.io, ghcr.io, custom URL, or OpenShift internal
    registry as fallback) when deploying to OpenShift/K8s
  • Image pull secret management: Auto-creates a docker-registry
    pull secret and links it to the default service account. Created
    once per registry/namespace, reused on subsequent deploys. Prompts
    for password only when needed (no existing secret, no stored
    credentials, not already logged in via podman). Shows warning at
    end of deploy output when secret creation fails or is skipped
  • Unified single-terminal deploy: All steps (build, retag, push/load,
    apply) run in one terminal tab via a combined temp script
  • Image name rewriting: Maps bare image names to full registry paths
    in Kubernetes manifests via imageNameMap before oc apply
  • imagePullPolicy patching: Sets IfNotPresent for locally loaded
    images on Kind/Minikube to prevent pulling from remote registry
  • Deploy state persistence: Saves cluster URL and namespace in
    .odo/deploystate.json for context-switch reconciliation
  • Dev/Deploy mutual exclusivity: Start Dev hidden when deployed,
    Deploy/Undeploy hidden when dev is active (via when clauses)
  • Stop Dev regex fix: Fixed alternation bug that matched run
    anywhere in viewItem (e.g. dep-run triggering Stop Dev)
  • Unit tests: ContainerRuntimeDetector, kubeUtils, registryConfig,
    applyCommand, deploy
  • Public UI tests: Deploy/Undeploy test cases in componentContextMenu

Fixes: https://redhat.atlassian.net/browse/CRW-10962
Fixes: #4482

Assisted-By: Claude Opus 4.6 noreply@anthropic.com

@codecov

codecov Bot commented Jul 12, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 65.50681% with 228 lines in your changes missing coverage. Please review.
✅ Project coverage is 51.10%. Comparing base (da60441) to head (db92647).
⚠️ Report is 1943 commits behind head on main.

Files with missing lines Patch % Lines
src/devfile/registryConfig.ts 34.48% 95 Missing ⚠️
src/devfile/applyCommand.ts 57.28% 85 Missing and 3 partials ⚠️
src/openshift/component.ts 72.72% 14 Missing and 1 partial ⚠️
src/devfile/deploy.ts 84.78% 14 Missing ⚠️
src/util/containerRuntime.ts 92.63% 7 Missing ⚠️
src/devfile/undeploy.ts 79.31% 6 Missing ⚠️
src/componentsView.ts 66.66% 3 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##             main    #5957       +/-   ##
===========================================
+ Coverage   32.37%   51.10%   +18.72%     
===========================================
  Files          85      116       +31     
  Lines        6505    11003     +4498     
  Branches     1349     2490     +1141     
===========================================
+ Hits         2106     5623     +3517     
- Misses       4399     5373      +974     
- Partials        0        7        +7     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@vrubezhny
vrubezhny force-pushed the feature/image-build-support branch 2 times, most recently from ac9f931 to a491e02 Compare July 13, 2026 01:31
@vrubezhny
vrubezhny marked this pull request as draft July 13, 2026 02:16
@vrubezhny
vrubezhny force-pushed the feature/image-build-support branch from a491e02 to c11a77f Compare July 13, 2026 12:34
@vrubezhny
vrubezhny force-pushed the feature/image-build-support branch from c11a77f to b00e176 Compare August 6, 2026 00:48
@vrubezhny vrubezhny changed the title Add image build support for component deployment Add component deployment to Kind/Minikube and OpenShift/K8s clusters Aug 6, 2026
@vrubezhny
vrubezhny force-pushed the feature/image-build-support branch 14 times, most recently from ec77dfb to b8e183e Compare August 7, 2026 20:13
@vrubezhny vrubezhny changed the title Add component deployment to Kind/Minikube and OpenShift/K8s clusters Add component deployment to Kind/Minikube and OpenShift/K8s clusters (CRW-10962) Aug 7, 2026
@vrubezhny
vrubezhny force-pushed the feature/image-build-support branch 7 times, most recently from 203725b to 9ad9ccd Compare August 8, 2026 02:57
@vrubezhny
vrubezhny force-pushed the feature/image-build-support branch 7 times, most recently from e5fd3f2 to d404720 Compare August 8, 2026 14:42
@vrubezhny
vrubezhny marked this pull request as ready for review August 8, 2026 15:02
… clusters (CRW-10962)

Signed-off-by: Victor Rubezhny <vrubezhny@redhat.com>
Assisted-By: Claude Opus 4.6 <noreply@anthropic.com>
@vrubezhny
vrubezhny force-pushed the feature/image-build-support branch from d404720 to db92647 Compare August 10, 2026 14:25
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.

Migrate "odo deploy"

1 participant