forked from aegis/pyserveX
109 lines
2.9 KiB
Makefile
109 lines
2.9 KiB
Makefile
# Konduktor Go Build
|
|
# Makefile for building and testing Konduktor
|
|
|
|
.PHONY: all build build-konduktor build-konduktorctl test clean deps fmt lint run
|
|
|
|
# Build configuration
|
|
VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
|
|
GIT_COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
|
|
BUILD_TIME ?= $(shell date -u '+%Y-%m-%dT%H:%M:%SZ')
|
|
LDFLAGS := -X main.Version=$(VERSION) -X main.GitCommit=$(GIT_COMMIT) -X main.BuildTime=$(BUILD_TIME)
|
|
|
|
# Output directories
|
|
BIN_DIR := bin
|
|
|
|
all: deps build
|
|
|
|
# Download dependencies
|
|
deps:
|
|
@echo "==> Downloading dependencies..."
|
|
go mod download
|
|
go mod tidy
|
|
|
|
# Build all binaries
|
|
build: build-konduktor build-konduktorctl
|
|
|
|
# Build konduktor server
|
|
build-konduktor:
|
|
@echo "==> Building konduktor..."
|
|
@mkdir -p $(BIN_DIR)
|
|
go build -ldflags "$(LDFLAGS)" -o $(BIN_DIR)/konduktor ./cmd/konduktor
|
|
|
|
# Build konduktorctl CLI
|
|
build-konduktorctl:
|
|
@echo "==> Building konduktorctl..."
|
|
@mkdir -p $(BIN_DIR)
|
|
go build -ldflags "$(LDFLAGS)" -o $(BIN_DIR)/konduktorctl ./cmd/konduktorctl
|
|
|
|
# Run tests
|
|
test:
|
|
@echo "==> Running tests..."
|
|
go test -v -race -cover ./...
|
|
|
|
# Run tests with coverage report
|
|
test-coverage:
|
|
@echo "==> Running tests with coverage..."
|
|
go test -v -race -coverprofile=coverage.out ./...
|
|
go tool cover -html=coverage.out -o coverage.html
|
|
@echo "Coverage report: coverage.html"
|
|
|
|
# Format code
|
|
fmt:
|
|
@echo "==> Formatting code..."
|
|
go fmt ./...
|
|
goimports -w .
|
|
|
|
# Lint code
|
|
lint:
|
|
@echo "==> Linting code..."
|
|
golangci-lint run ./...
|
|
|
|
# Run the server (development)
|
|
run: build-konduktor
|
|
@echo "==> Running konduktor..."
|
|
./$(BIN_DIR)/konduktor -c ../config.yaml
|
|
|
|
# Clean build artifacts
|
|
clean:
|
|
@echo "==> Cleaning..."
|
|
rm -rf $(BIN_DIR)
|
|
rm -f coverage.out coverage.html
|
|
|
|
# Install binaries to GOPATH/bin
|
|
install: build
|
|
@echo "==> Installing binaries..."
|
|
cp $(BIN_DIR)/konduktor $(GOPATH)/bin/
|
|
cp $(BIN_DIR)/konduktorctl $(GOPATH)/bin/
|
|
|
|
# Generate mocks (for testing)
|
|
generate:
|
|
@echo "==> Generating code..."
|
|
go generate ./...
|
|
|
|
# Docker build
|
|
docker-build:
|
|
@echo "==> Building Docker image..."
|
|
docker build -t konduktor:$(VERSION) .
|
|
|
|
# Show help
|
|
help:
|
|
@echo "Konduktor Build System"
|
|
@echo ""
|
|
@echo "Usage: make [target]"
|
|
@echo ""
|
|
@echo "Targets:"
|
|
@echo " all Download deps and build all binaries"
|
|
@echo " deps Download and tidy dependencies"
|
|
@echo " build Build all binaries"
|
|
@echo " build-konduktor Build the server binary"
|
|
@echo " build-konduktorctl Build the CLI binary"
|
|
@echo " test Run tests"
|
|
@echo " test-coverage Run tests with coverage report"
|
|
@echo " fmt Format code"
|
|
@echo " lint Lint code"
|
|
@echo " run Build and run the server"
|
|
@echo " clean Clean build artifacts"
|
|
@echo " install Install binaries to GOPATH/bin"
|
|
@echo " docker-build Build Docker image"
|
|
@echo " help Show this help"
|