Files
ClawdBox/Makefile
2026-03-08 00:00:54 +11:00

84 lines
2.6 KiB
Makefile

.PHONY: build push deploy redeploy logs shell disk-usage clean-cache health-check help
# Use podman if docker is not available
DOCKER := $(shell which docker 2>/dev/null || which podman 2>/dev/null)
IMAGE_NAME=default-route-openshift-image-registry.apps.lab.apilab.us/clawdbox/clawdbox:latest
NAMESPACE=clawdbox
SSH_HOST=clawdbox.apps.lab.apilab.us
SSH_PORT=2222
SSH_USER=claw
help:
@echo "ClawdBox Makefile - Common Operations"
@echo ""
@echo "Build & Deploy:"
@echo " make build - Build Docker image"
@echo " make push - Build and push image to registry"
@echo " make deploy - Deploy all manifests to cluster"
@echo " make redeploy - Push image and restart deployment"
@echo ""
@echo "Operations:"
@echo " make logs - Stream pod logs"
@echo " make shell - SSH into container"
@echo " make disk-usage - Check /data disk usage"
@echo " make clean-cache - Clear pip/npm caches"
@echo " make health-check - Run comprehensive health diagnostics"
@echo ""
@echo "Debugging:"
@echo " make describe - Describe deployment"
@echo " make events - Show namespace events"
@echo " make restart - Restart deployment (without push)"
build:
$(DOCKER) build -t $(IMAGE_NAME) .
push: build
$(DOCKER) push $(IMAGE_NAME)
deploy:
kubectl apply -f manifests/
redeploy: push
kubectl rollout restart deployment/clawdbox -n $(NAMESPACE)
@echo "Waiting for rollout to complete..."
kubectl rollout status deployment/clawdbox -n $(NAMESPACE)
restart:
kubectl rollout restart deployment/clawdbox -n $(NAMESPACE)
kubectl rollout status deployment/clawdbox -n $(NAMESPACE)
logs:
kubectl logs -f -n $(NAMESPACE) deployment/clawdbox
shell:
ssh -p $(SSH_PORT) $(SSH_USER)@$(SSH_HOST)
disk-usage:
@ssh -p $(SSH_PORT) $(SSH_USER)@$(SSH_HOST) "df -h /data && echo '' && echo 'Top 10 Largest Directories:' && du -h /data 2>/dev/null | sort -rh | head -10"
clean-cache:
@ssh -p $(SSH_PORT) $(SSH_USER)@$(SSH_HOST) "rm -rf /data/.cache/pip/* /data/.cache/npm/* && echo 'Package caches cleared'"
health-check:
@ssh -p $(SSH_PORT) $(SSH_USER)@$(SSH_HOST) "/data/scripts/health-check.sh"
describe:
kubectl describe deployment/clawdbox -n $(NAMESPACE)
events:
kubectl get events -n $(NAMESPACE) --sort-by='.lastTimestamp'
status:
@echo "=== Deployment Status ==="
@kubectl get deployment -n $(NAMESPACE)
@echo ""
@echo "=== Pod Status ==="
@kubectl get pods -n $(NAMESPACE)
@echo ""
@echo "=== Service Status ==="
@kubectl get svc -n $(NAMESPACE)
@echo ""
@echo "=== Route Status ==="
@kubectl get route -n $(NAMESPACE) 2>/dev/null || echo "No routes found (not on OpenShift?)"