186 lines
6.5 KiB
Makefile
186 lines
6.5 KiB
Makefile
# Kandev Makefile
|
|
|
|
# Variables
|
|
BINARY_NAME := kandev
|
|
BUILD_DIR := bin
|
|
GO := go
|
|
GOFLAGS := -v
|
|
LDFLAGS := -s -w
|
|
|
|
# Cross-platform commands
|
|
ifeq ($(OS),Windows_NT)
|
|
RM = cmd /c del /s /q
|
|
RMDIR = cmd /c rmdir /s /q
|
|
MKDIR = cmd /c mkdir
|
|
else
|
|
RM = rm -f
|
|
RMDIR = rm -rf
|
|
MKDIR = mkdir -p
|
|
endif
|
|
|
|
# Build info
|
|
VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
|
|
COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
|
|
BUILD_TIME := $(shell date -u '+%Y-%m-%dT%H:%M:%SZ' 2>/dev/null || powershell -c "Get-Date -Format 'yyyy-MM-ddTHH:mm:ssZ'" 2>/dev/null || echo "unknown")
|
|
|
|
LDFLAGS += -X main.Version=$(VERSION) -X main.Commit=$(COMMIT) -X main.BuildTime=$(BUILD_TIME)
|
|
|
|
.PHONY: all build build-all build-agentctl build-agentctl-linux build-acpdbg acpdbg build-mock-agent build-preview clean run dev start-debug test test-e2e test-sprites-e2e lint fmt vet help
|
|
|
|
## Default target
|
|
all: build
|
|
|
|
## Build the preview CLI for deploying PR preview environments to Sprites
|
|
build-preview:
|
|
@echo "Building preview..."
|
|
@$(MKDIR) $(BUILD_DIR)
|
|
$(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/preview ./cmd/preview
|
|
|
|
## Build the mock-agent binary for testing
|
|
build-mock-agent:
|
|
@echo "Building mock-agent..."
|
|
@$(MKDIR) $(BUILD_DIR)
|
|
$(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/mock-agent ./cmd/mock-agent
|
|
|
|
## Build and run acpdbg — usage: make acpdbg ARGS="probe auggie"
|
|
acpdbg: build-acpdbg
|
|
@$(BUILD_DIR)/acpdbg $(ARGS)
|
|
|
|
## Build the acpdbg binary — raw ACP JSON-RPC debugger (see .agents/skills/acp-debug)
|
|
build-acpdbg:
|
|
@echo "Building acpdbg..."
|
|
@$(MKDIR) $(BUILD_DIR)
|
|
$(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/acpdbg ./cmd/acpdbg
|
|
|
|
## Build the unified kandev binary
|
|
build: build-agentctl build-mock-agent build-acpdbg
|
|
@echo "Building $(BINARY_NAME)..."
|
|
@$(MKDIR) $(BUILD_DIR)
|
|
CGO_ENABLED=1 $(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(BINARY_NAME) ./cmd/kandev
|
|
|
|
## Build all binaries (unified + individual services + agentctl)
|
|
build-all: build build-agentctl
|
|
@echo "Building individual services..."
|
|
$(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/agent-manager ./cmd/agent-manager
|
|
|
|
## Build the agentctl sidecar binary (includes embedded MCP server)
|
|
build-agentctl:
|
|
@echo "Building agentctl..."
|
|
@$(MKDIR) $(BUILD_DIR)
|
|
$(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/agentctl ./cmd/agentctl
|
|
|
|
## Build agentctl for linux/amd64 (used by Sprites remote executor)
|
|
build-agentctl-linux:
|
|
@echo "Building agentctl for linux/amd64..."
|
|
@$(MKDIR) $(BUILD_DIR)
|
|
GOOS=linux GOARCH=amd64 $(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/agentctl-linux-amd64 ./cmd/agentctl
|
|
|
|
|
|
## Clean build artifacts
|
|
clean:
|
|
@echo "Cleaning..."
|
|
@$(RMDIR) $(BUILD_DIR)
|
|
$(GO) clean
|
|
|
|
## Run the application
|
|
run: build
|
|
@echo "Running $(BINARY_NAME)..."
|
|
./$(BUILD_DIR)/$(BINARY_NAME)
|
|
|
|
## Run in development mode (with pprof enabled)
|
|
dev: build
|
|
@echo "Running $(BINARY_NAME) in development mode..."
|
|
@KANDEV_DEBUG_PPROF_ENABLED=true exec ./$(BUILD_DIR)/$(BINARY_NAME)
|
|
|
|
## Run in debug mode (pprof + debug logging)
|
|
start-debug: build
|
|
@echo "Running $(BINARY_NAME) in debug mode (pprof + debug logging)..."
|
|
@KANDEV_DEBUG_PPROF_ENABLED=true KANDEV_LOG_LEVEL=debug exec ./$(BUILD_DIR)/$(BINARY_NAME)
|
|
|
|
## Run tests
|
|
test:
|
|
@echo "Running tests..."
|
|
CGO_ENABLED=1 $(GO) test ./...
|
|
|
|
## Run E2E tests (real agents, costs money — manual only)
|
|
## Set agent commands via env vars: E2E_CLAUDE_CODE_COMMAND, E2E_AMP_COMMAND
|
|
## Enable debug: KANDEV_DEBUG_AGENT_MESSAGES=true KANDEV_DEBUG_LOG_DIR=/tmp/e2e-debug
|
|
test-e2e:
|
|
@echo "Running E2E adapter tests..."
|
|
$(GO) test -tags e2e -v -timeout 10m ./internal/agentctl/server/adapter/e2e/
|
|
|
|
## Run sprites e2e test (requires SPRITES_API_TOKEN env var)
|
|
## Sprites VMs are always x86_64/amd64 regardless of host architecture.
|
|
test-sprites-e2e: build-agentctl-linux
|
|
@echo "Running sprites e2e test..."
|
|
KANDEV_AGENTCTL_LINUX_BINARY=$(CURDIR)/$(BUILD_DIR)/agentctl-linux-amd64 \
|
|
$(GO) test -v -count=1 -tags sprites_e2e -run TestSpritesE2E -timeout 10m ./internal/agent/lifecycle/
|
|
|
|
## Run tests with coverage
|
|
test-coverage:
|
|
@echo "Running tests with coverage..."
|
|
CGO_ENABLED=1 $(GO) test -v -coverprofile=coverage.out ./...
|
|
$(GO) tool cover -html=coverage.out -o coverage.html
|
|
|
|
## Run linter (requires golangci-lint)
|
|
lint:
|
|
@echo "Running linter..."
|
|
golangci-lint run ./...
|
|
|
|
## Format code
|
|
fmt:
|
|
@echo "Formatting code..."
|
|
$(GO) fmt ./...
|
|
|
|
## Run go vet
|
|
vet:
|
|
@echo "Running vet..."
|
|
$(GO) vet ./...
|
|
|
|
## Tidy dependencies
|
|
tidy:
|
|
@echo "Tidying dependencies..."
|
|
$(GO) mod tidy
|
|
|
|
## Download dependencies
|
|
deps:
|
|
@echo "Downloading dependencies..."
|
|
$(GO) mod download
|
|
|
|
## Build for multiple platforms
|
|
build-cross:
|
|
@echo "Building for multiple platforms..."
|
|
@$(MKDIR) $(BUILD_DIR)
|
|
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 $(GO) build -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(BINARY_NAME)-linux-amd64 ./cmd/kandev
|
|
CGO_ENABLED=1 GOOS=darwin GOARCH=amd64 $(GO) build -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(BINARY_NAME)-darwin-amd64 ./cmd/kandev
|
|
CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 $(GO) build -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(BINARY_NAME)-darwin-arm64 ./cmd/kandev
|
|
CGO_ENABLED=1 GOOS=windows GOARCH=amd64 $(GO) build -ldflags "$(LDFLAGS)" -o $(BUILD_DIR)/$(BINARY_NAME)-windows-amd64.exe ./cmd/kandev
|
|
|
|
## Show help
|
|
help:
|
|
@echo "Kandev - AI Agent Kanban Board"
|
|
@echo ""
|
|
@echo "Usage:"
|
|
@echo " make [target]"
|
|
@echo ""
|
|
@echo "Targets:"
|
|
@echo " build Build the unified kandev binary (default)"
|
|
@echo " build-all Build all binaries (unified + individual services + agentctl)"
|
|
@echo " build-agentctl Build the agentctl sidecar binary (includes embedded MCP server)"
|
|
@echo " build-mock-agent Build the mock-agent binary for testing"
|
|
@echo " build-preview Build the preview CLI for PR preview environments"
|
|
@echo " clean Remove build artifacts"
|
|
@echo " run Build and run the application"
|
|
@echo " dev Run in development mode (pprof enabled)"
|
|
@echo " start-debug Run in debug mode (pprof + debug logging)"
|
|
@echo " test Run tests"
|
|
@echo " test-e2e Run E2E adapter tests (real agents, costs money)"
|
|
@echo " test-coverage Run tests with coverage report"
|
|
@echo " lint Run golangci-lint"
|
|
@echo " fmt Format code"
|
|
@echo " vet Run go vet"
|
|
@echo " tidy Tidy go.mod dependencies"
|
|
@echo " deps Download dependencies"
|
|
@echo " build-cross Build for Linux, macOS, and Windows"
|
|
@echo " help Show this help message"
|