Skip to main content

build-ho-image

Build and push hypershift-operator container image. Auto-applies when testing HO changes that require deploying to a live cluster.

Source facts

Repository
openshift/hypershift
Last source activity
February 9, 2026 at 11:12
Detected SKILL.md language
English
Stars
546
Forks
578

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
Build HO Image
description
Build and push hypershift-operator container image. Auto-applies when testing HO changes that require deploying to a live cluster.
# Build HyperShift-Operator Image This skill enables building and pushing custom hypershift-operator (HO) images for testing changes in a live HyperShift environment. ## When to Use This Skill This skill automatically applies when: - You've made changes to code in `hypershift-operator/` - You need to test HO changes against a live cluster - The user asks to build/push a HO image - You need to iterate on HO fixes with e2e tests ## Prerequisites Source the environment file before using this skill: ```bash source dev/claude-env.sh ``` ## Image Registry Configuration Environment variables from `dev/claude-env.sh`: | Variable | Description | |----------|-------------| | `HO_IMAGE_REPO` | Container registry for HO images | | `RUNTIME` | Container runtime (podman/docker) | ## Building the HO Image ### Step 1: Generate a Unique Tag Use a tag that identifies the change (branch name, feature, or timestamp): ```bash # Option 1: Use branch name TAG=$(git rev-parse --abbrev-ref HEAD | tr '/' '-') # Option 2: Use short commit hash TAG=$(git rev-parse --short HEAD) # Option 3: Use descriptive name + number for iterations TAG="feature-name-1" ``` ### Step 2: Build the Image The HO image uses the main `Dockerfile`: ```bash $RUNTIME build -f Dockerfile --platform linux/amd64 -t $HO_IMAGE_REPO:$TAG . ``` **Note**: The build runs `make hypershift`, `make hypershift-operator`, `make karpenter-operator`, and `make product-cli` inside the container. ### Step 3: Push the Image ```bash $RUNTIME push $HO_IMAGE_REPO:$TAG ``` ## Quick One-Liner Build and push in one command: ```bash TAG="my-fix-1" && $RUNTIME build -f Dockerfile --platform linux/amd64 -t $HO_IMAGE_REPO:$TAG . && $RUNTIME push $HO_IMAGE_REPO:$TAG ``` ## Iteration Workflow When iterating on HO fixes: 1. Make code changes in `hypershift-operator/` 2. Build and push image with incremented tag (e.g., `fix-1`, `fix-2`, `fix-3`) 3. Reinstall HyperShift with new image 4. Run e2e test or manual validation 5. Analyze results 6. Repeat until test passes ## What Gets Built The main `Dockerfile` builds: - `hypershift` CLI binary - `hypershift-no-cgo` binary - `hypershift-operator` binary - `karpenter-operator` binary - `hcp` (product CLI) binary All are included in the final image. ## Troubleshooting ### Build Fails - Check that vendored dependencies are up to date: `go mod vendor` - Ensure code compiles locally: `make hypershift-operator` - Check for API generation issues: `make api` ### Push Fails - Verify registry login: `$RUNTIME login quay.io` - Check repository permissions ### Operator Not Running After Install - Check operator logs: `kubectl logs -n hypershift deployment/operator` - Verify image pull succeeded: `kubectl describe pod -n hypershift -l app=operator` - Ensure cluster can pull from registry ### Changes Not Reflected - Make sure you're using the correct image tag - Check if old pods are still running: `kubectl get pods -n hypershift` - Force rollout: `kubectl rollout restart deployment/operator -n hypershift`
View on GitHub