11DOCKER_REGISTRY ?= ghcr.io
22BASE_IMAGE_REGISTRY ?= cgr.dev
3+
34DOCKER_REPO ?= kagent-dev/kagent
5+
6+ HELM_REPO ?= oci://ghcr.io/kagent-dev
7+ HELM_ACTION =upgrade --install
8+
49KIND_CLUSTER_NAME ?= kagent
10+ KIND_IMAGE_VERSION ?= 1.33.1
11+ KIND_CREATE_CMD ?= "kind create cluster --name $(KIND_CLUSTER_NAME ) --image kindest/node:v$(KIND_IMAGE_VERSION ) --config ./scripts/kind/kind-config.yaml"
512
613BUILD_DATE := $(shell date -u '+% Y-% m-% d')
714GIT_COMMIT := $(shell git rev-parse --short HEAD || echo "unknown")
@@ -12,6 +19,7 @@ LDFLAGS := -X github.com/kagent-dev/tools/internal/version.Version=$(VERSION) -X
1219
1320# # Location to install dependencies to
1421LOCALBIN ?= $(shell pwd) /bin
22+ HELM_DIST_FOLDER ?= $(shell pwd) /dist
1523
1624.PHONY : clean
1725clean :
@@ -55,8 +63,8 @@ test-only: ## Run tests only (without build/lint for faster iteration)
5563 go test -tags=test -v -cover ./pkg/... ./internal/...
5664
5765.PHONY : e2e
58- e2e : test docker-build
59- go test -tags=test -v - cover ./e2e/...
66+ e2e : test retag
67+ go test -v - tags=test -cover ./test/ e2e/ -timeout 5m
6068
6169bin/kagent-tools-linux-amd64 :
6270 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags " $( LDFLAGS) " -o bin/kagent-tools-linux-amd64 ./cmd
@@ -89,7 +97,7 @@ bin/kagent-tools-windows-amd64.exe.sha256: bin/kagent-tools-windows-amd64.exe
8997 sha256sum bin/kagent-tools-windows-amd64.exe > bin/kagent-tools-windows-amd64.exe.sha256
9098
9199.PHONY : build
92- build : $(LOCALBIN ) bin/kagent-tools-linux-amd64.sha256 bin/kagent-tools-linux-arm64.sha256 bin/kagent-tools-darwin-amd64.sha256 bin/kagent-tools-darwin-arm64.sha256 bin/kagent-tools-windows-amd64.exe.sha256
100+ build : $(LOCALBIN ) clean bin/kagent-tools-linux-amd64.sha256 bin/kagent-tools-linux-arm64.sha256 bin/kagent-tools-darwin-amd64.sha256 bin/kagent-tools-darwin-arm64.sha256 bin/kagent-tools-windows-amd64.exe.sha256
93101build :
94102 @echo " Build complete. Binaries are available in the bin/ directory."
95103 ls -lt bin/kagent-tools-*
@@ -100,8 +108,10 @@ run: docker-build
100108 @echo " Use: npx @modelcontextprotocol/inspector to connect to the tool server"
101109 @docker run --rm --net=host -p 8084:8084 -e OPENAI_API_KEY=$(OPENAI_API_KEY ) -v $(HOME ) /.kube:/home/nonroot/.kube -e KAGENT_TOOLS_PORT=8084 $(TOOLS_IMG ) -- --kubeconfig /root/.kube/config
102110
103- PHONY : retag
104- retag : docker-build
111+ .PHONY : retag
112+ retag : docker-build helm-version
113+ @echo " Check Kind cluster $( KIND_CLUSTER_NAME) exists"
114+ kind get clusters | grep -q $(KIND_CLUSTER_NAME ) || bash -c $(KIND_CREATE_CMD )
105115 @echo " Retagging tools image to $( RETAGGED_TOOLS_IMG) "
106116 docker tag $(TOOLS_IMG ) $(RETAGGED_TOOLS_IMG )
107117 kind load docker-image --name $(KIND_CLUSTER_NAME ) $(RETAGGED_TOOLS_IMG )
@@ -127,7 +137,7 @@ DOCKER_BUILD_ARGS ?= --pull --load --platform linux/$(LOCALARCH) --builder $(BUI
127137TOOLS_ISTIO_VERSION ?= 1.26.2
128138TOOLS_ARGO_ROLLOUTS_VERSION ?= 1.8.3
129139TOOLS_KUBECTL_VERSION ?= 1.33.2
130- TOOLS_HELM_VERSION ?= 3.18.3
140+ TOOLS_HELM_VERSION ?= 3.18.4
131141TOOLS_CILIUM_VERSION ?= 0.18.5
132142
133143# build args
@@ -155,11 +165,55 @@ docker-build-all: DOCKER_BUILD_ARGS = --progress=plain --builder $(BUILDX_BUILDE
155165docker-build-all :
156166 $(DOCKER_BUILDER ) build $(DOCKER_BUILD_ARGS ) $(TOOLS_IMAGE_BUILD_ARGS ) -f Dockerfile ./
157167
168+ .PHONY : helm-version
169+ helm-version :
170+ VERSION=$(VERSION ) envsubst < helm/kagent-tools/Chart-template.yaml > helm/kagent-tools/Chart.yaml
171+ mkdir -p $(HELM_DIST_FOLDER )
172+ helm package -d $(HELM_DIST_FOLDER ) helm/kagent-tools
173+
174+ .PHONY : helm-uninstall
175+ helm-uninstall :
176+ helm uninstall kagent --namespace kagent --kube-context kind-$(KIND_CLUSTER_NAME ) --wait
177+
178+ .PHONY : helm-install
179+ helm-install : helm-version
180+ helm $(HELM_ACTION ) kagent-tools ./helm/kagent-tools \
181+ --kube-context kind-$(KIND_CLUSTER_NAME ) \
182+ --namespace kagent \
183+ --create-namespace \
184+ --history-max 2 \
185+ --timeout 5m \
186+ -f ./scripts/kind/test-values.yaml \
187+ --set tools.image.registry=$(RETAGGED_DOCKER_REGISTRY ) \
188+ --wait
189+
190+ .PHONY : helm-publish
191+ helm-publish : helm-version
192+ helm push ./$(HELM_DIST_FOLDER ) /kagent-tools-$(VERSION ) .tgz $(HELM_REPO ) /tools/helm
193+
194+ .PHONY : create-kind-cluster
195+ create-kind-cluster :
196+ docker pull kindest/node:v$(KIND_IMAGE_VERSION ) || true
197+ bash -c $(KIND_CREATE_CMD )
198+
199+ .PHONY : delete-kind-cluster
200+ delete-kind-cluster :
201+ kind delete cluster --name $(KIND_CLUSTER_NAME )
202+
158203.PHONY : kind-update-kagent
159- kind-update-kagent : docker-build
160- kind get clusters | grep -q $(KIND_CLUSTER_NAME ) || kind create cluster --name $(KIND_CLUSTER_NAME )
161- kind load docker-image --name $(KIND_CLUSTER_NAME ) $(TOOLS_IMG )
162- kubectl patch --namespace kagent deployment/kagent --type=' json' -p=' [{"op": "replace", "path": "/spec/template/spec/containers/3/image", "value": "$(TOOLS_IMG)"}]'
204+ kind-update-kagent : retag
205+ kubectl patch --namespace kagent deployment/kagent --type=' json' -p=' [{"op": "replace", "path": "/spec/template/spec/containers/3/image", "value": "$(RETAGGED_TOOLS_IMG)"}]'
206+
207+ .PHONY : otel-local
208+ otel-local :
209+ docker rm -f jaeger-desktop || true
210+ docker run -d --name jaeger-desktop --restart=always -p 16686:16686 -p 4317:4317 -p 4318:4318 jaegertracing/jaeger:2.7.0
211+ open http://localhost:16686/
212+
213+ .PHONY : report/image-cve
214+ report/image-cve : docker-build govulncheck
215+ echo " Running CVE scan :: CVE -> CSV ... reports/$( SEMVER) /"
216+ grype docker:$(TOOLS_IMG ) -o template -t reports/cve-report.tmpl --file reports/$(SEMVER ) /tools-cve.csv
163217
164218# # Tool Binaries
165219# # Location to install dependencies t
0 commit comments