en un clic
local-full-test
// Run full end-to-end test workflows for Kagenti. Supports Kind and HyperShift clusters with automated setup and testing.
// Run full end-to-end test workflows for Kagenti. Supports Kind and HyperShift clusters with automated setup and testing.
Full release lifecycle for Kagenti — alpha, RC iteration loop, GA, and patch releases with multi-repo coordination
TDD iteration loop across 4 environments (local Kind, custom HyperShift, CI Kind, CI HyperShift) with test matrix tracking and log analysis
Create and manage git worktrees for parallel development and testing
Deploy and manage Kagenti operator, agents, and tools on Kubernetes. Handles installer, CRDs, pipelines, and demo deployments.
Deploy the weather agent and MCP tool demo via CLI (no UI required). Uses pre-built ghcr.io images, deploys to team1. Optimized for speed (~15s).
Manage Kind clusters for local Kagenti testing. Create, destroy, deploy platform, and run E2E tests.
| name | local:full-test |
| description | Run full end-to-end test workflows for Kagenti. Supports Kind and HyperShift clusters with automated setup and testing. |
Run complete end-to-end test workflows that create clusters, deploy Kagenti, and run tests.
# Full test with Kind cluster
./.github/scripts/local-setup/kind-full-test.sh
# Login to any OpenShift cluster
oc login https://api.your-cluster.example.com:6443 -u kubeadmin -p <password>
# Full test (no AWS/.env needed)
./.github/scripts/local-setup/openshift-full-test.sh
# Show help
./.github/scripts/local-setup/openshift-full-test.sh --help
# Setup first (one-time)
./.github/scripts/hypershift/preflight-check.sh
./.github/scripts/hypershift/setup-hypershift-ci-credentials.sh
./.github/scripts/hypershift/local-setup.sh
# Full test with HyperShift cluster (keeps cluster after)
source .env.kagenti-hypershift-custom
./.github/scripts/local-setup/hypershift-full-test.sh --skip-cluster-destroy
# With custom suffix
./.github/scripts/local-setup/hypershift-full-test.sh pr123 --skip-cluster-destroy
# Include cleanup after test
./.github/scripts/local-setup/hypershift-full-test.sh --include-cluster-destroy
# Show help
./.github/scripts/local-setup/hypershift-full-test.sh --help
The kind-full-test.sh script runs:
# Keep cluster after test (default)
./.github/scripts/local-setup/kind-full-test.sh
# Destroy cluster after test
./.github/scripts/local-setup/kind-full-test.sh --include-cluster-destroy
# Skip specific phases
SKIP_DEPLOY=true ./.github/scripts/local-setup/kind-full-test.sh
SKIP_TESTS=true ./.github/scripts/local-setup/kind-full-test.sh
The hypershift-full-test.sh script runs:
# With custom cluster suffix
./.github/scripts/local-setup/hypershift-full-test.sh pr529
# Keep cluster (default with --skip-cluster-destroy)
./.github/scripts/local-setup/hypershift-full-test.sh --skip-cluster-destroy
# Destroy cluster after test
./.github/scripts/local-setup/hypershift-full-test.sh --include-cluster-destroy
# 1. Create cluster
./.github/scripts/kind/create-cluster.sh
# 2. Deploy platform
./.github/scripts/kind/deploy-platform.sh
# 3. Run E2E tests
./.github/scripts/kind/run-e2e-tests.sh
# 4. Access UI
./.github/scripts/kind/access-ui.sh
# 1. Create cluster
./.github/scripts/hypershift/create-cluster.sh
# 2. Set kubeconfig
export KUBECONFIG=~/clusters/hcp/<cluster-name>/auth/kubeconfig
# 3. Deploy platform
./.github/scripts/kagenti-operator/30-run-installer.sh --env ocp
./.github/scripts/kagenti-operator/41-wait-crds.sh
# 4. Deploy agents
./.github/scripts/kagenti-operator/71-build-weather-tool.sh
./.github/scripts/kagenti-operator/72-deploy-weather-tool.sh
./.github/scripts/kagenti-operator/74-deploy-weather-agent.sh
# 5. Run E2E tests
export AGENT_URL="https://$(oc get route -n team1 weather-service -o jsonpath='{.spec.host}')"
export KAGENTI_CONFIG_FILE=deployments/envs/ocp_values.yaml
./.github/scripts/kagenti-operator/90-run-e2e-tests.sh
# 6. Cleanup (when done)
./.github/scripts/hypershift/destroy-cluster.sh <suffix>
# Show all deployed services and access URLs
./.github/scripts/local-setup/show-services.sh
Output includes:
For testing just the operator:
./.github/scripts/local-setup/deploy-kagenti-operator.sh
| Variable | Description |
|---|---|
SKIP_DEPLOY | Skip platform deployment |
SKIP_TESTS | Skip E2E tests |
SKIP_OLLAMA | Skip Ollama installation (Kind) |
SKIP_LLAMA | Skip Ollama in HyperShift tests |
CLUSTER_NAME | Custom cluster name |
KUBECONFIG | Kubernetes config file (management cluster for HyperShift) |
HOSTED_KUBECONFIG | Hosted cluster kubeconfig (for running middle phases only) |
HyperShift workflows use two separate kubeconfigs:
| Kubeconfig | Purpose | Location |
|---|---|---|
| Management cluster | Create/destroy hosted clusters | Set via KUBECONFIG in .env.kagenti-hypershift-custom |
| Hosted cluster | Deploy Kagenti, run tests | ~/clusters/hcp/<cluster-name>/auth/kubeconfig |
The script automatically switches between them at phase boundaries.
When only running install/agents/test (skipping create/destroy), you can set just HOSTED_KUBECONFIG:
# No need to source .env - just set the hosted cluster kubeconfig
export HOSTED_KUBECONFIG=~/clusters/hcp/kagenti-hypershift-custom-ladas/auth/kubeconfig
./.github/scripts/local-setup/hypershift-full-test.sh --skip-cluster-create --skip-cluster-destroy
# All namespaces
kubectl get pods -A | grep -v Running
# Specific namespace
kubectl get pods -n team1
kubectl get pods -n kagenti-system
# Agent logs
kubectl logs -n team1 deployment/weather-service --tail=100
# Operator logs
kubectl logs -n kagenti-system -l app=kagenti-operator --tail=100
kubectl get events -A --sort-by='.lastTimestamp' | tail -30
# Just rerun tests (don't redeploy)
./.github/scripts/kind/run-e2e-tests.sh
# Or for HyperShift
./.github/scripts/kagenti-operator/90-run-e2e-tests.sh
| Aspect | Kind | HyperShift |
|---|---|---|
| Setup time | ~15 min | ~25 min |
| Cost | Free | AWS costs |
| Platform | Docker | AWS |
| Use case | Dev, quick tests | Real OCP testing |
| Cleanup | Instant | ~5 min |
| Resources | Local machine | AWS EC2 |
.github/scripts/local-setup/README.md - Local setup documentation