1- .PHONY : help build run test clean deps lint lint-install fmt vet
1+ .PHONY : help build run test test-unit test-e2e test-e2e-docker test-e2e-setup test-e2e-run test-e2e-short test-e2e-cleanup test-coverage clean deps lint lint-install fmt vet
22
33BINARY_NAME =flatrun-agent
4- VERSION? =dev
4+ VERSION? =$( shell cat VERSION 2>/ dev/null || echo "dev")
55BUILD_TIME =$(shell date -u '+% Y-% m-% d_% H:% M:% S')
66GIT_COMMIT =$(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
7- LDFLAGS =-ldflags "-X main.Version=$(VERSION ) -X main.BuildTime=$(BUILD_TIME ) -X main.GitCommit=$(GIT_COMMIT ) "
7+ LDFLAGS =-ldflags "-X github.com/flatrun/agent/pkg/version.Version=$(VERSION ) -X github.com/flatrun/agent/pkg/version.BuildTime=$(BUILD_TIME ) -X github.com/flatrun/agent/pkg/version.GitCommit=$(GIT_COMMIT ) "
8+
9+ E2E_API_URL? =http://localhost:18090/api
10+ E2E_DEPLOYMENTS_PATH? =/tmp/flatrun-e2e-deployments
811
912help :
1013 @echo " FlatRun Agent - Build commands"
1114 @echo " "
12- @echo " make deps - Install dependencies"
13- @echo " make build - Build binary"
14- @echo " make run - Run in development mode"
15- @echo " make test - Run tests"
16- @echo " make lint - Run golangci-lint"
17- @echo " make lint-install - Install golangci-lint"
18- @echo " make fmt - Format code with gofmt"
19- @echo " make vet - Run go vet"
20- @echo " make clean - Clean build artifacts"
15+ @echo " make deps - Install dependencies"
16+ @echo " make build - Build binary"
17+ @echo " make run - Run in development mode"
18+ @echo " make test - Run unit tests"
19+ @echo " make test-unit - Run unit tests only"
20+ @echo " make test-e2e - Run E2E tests (requires running agent)"
21+ @echo " make test-e2e-docker - Run full E2E tests in Docker (setup + run + cleanup)"
22+ @echo " make test-e2e-setup - Start E2E Docker test environment"
23+ @echo " make test-e2e-run - Run E2E tests against Docker environment"
24+ @echo " make test-e2e-short - Run E2E tests (skip long-running)"
25+ @echo " make test-e2e-cleanup - Clean up Docker test environment"
26+ @echo " make test-coverage - Run tests with coverage report"
27+ @echo " make lint - Run golangci-lint"
28+ @echo " make lint-install - Install golangci-lint"
29+ @echo " make fmt - Format code with gofmt"
30+ @echo " make vet - Run go vet"
31+ @echo " make clean - Clean build artifacts"
2132
2233deps :
2334 go mod download
@@ -29,8 +40,58 @@ build: deps
2940run : deps
3041 go run cmd/agent/main.go --config config.example.yml
3142
32- test :
33- go test -v ./...
43+ test : test-unit
44+
45+ test-unit :
46+ @echo " Running unit tests..."
47+ go test -v ./templates/...
48+ go test -v ./internal/...
49+ go test -v ./pkg/...
50+
51+ test-e2e :
52+ @echo " Running E2E tests (requires running agent on port 8090)..."
53+ go test -v ./test/e2e/...
54+
55+ test-e2e-setup :
56+ @echo " Setting up E2E Docker test environment..."
57+ @mkdir -p $(E2E_DEPLOYMENTS_PATH ) /nginx/conf.d
58+ @mkdir -p $(E2E_DEPLOYMENTS_PATH ) /nginx/certs
59+ @chmod -R 777 $(E2E_DEPLOYMENTS_PATH ) 2> /dev/null || true
60+ @docker network create web 2> /dev/null || true
61+ cd test/e2e && docker compose -f docker-compose.test.yml up -d --build
62+ @echo " Waiting for services to be healthy..."
63+ @timeout 120 bash -c ' until docker exec flatrun-e2e-agent wget -q -O /dev/null http://127.0.0.1:8090/api/health 2>/dev/null; do sleep 2; done' || (echo " Agent failed to start" && exit 1)
64+ @chmod -R 777 $(E2E_DEPLOYMENTS_PATH ) 2> /dev/null || true
65+ @echo " E2E environment ready at $( E2E_API_URL) "
66+
67+ test-e2e-run :
68+ @echo " Running E2E tests against Docker environment..."
69+ FLATRUN_API_URL=$(E2E_API_URL ) FLATRUN_DEPLOYMENTS_PATH=$(E2E_DEPLOYMENTS_PATH ) go test -v -timeout 10m ./test/e2e/...
70+
71+ test-e2e-docker : test-e2e-setup test-e2e-run
72+ @echo " E2E tests completed. Run 'make test-e2e-cleanup' to remove containers."
73+
74+ test-e2e-docker-full : test-e2e-setup test-e2e-run test-e2e-cleanup
75+ @echo " E2E tests completed and cleaned up."
76+
77+ test-e2e-short :
78+ @echo " Running E2E tests (short mode)..."
79+ FLATRUN_API_URL=$(E2E_API_URL ) FLATRUN_DEPLOYMENTS_PATH=$(E2E_DEPLOYMENTS_PATH ) go test -v -short -timeout 5m ./test/e2e/...
80+
81+ test-e2e-cleanup :
82+ @echo " Cleaning up E2E test environment..."
83+ cd test/e2e && docker compose -f docker-compose.test.yml down -v --remove-orphans 2> /dev/null || true
84+ @docker network rm web 2> /dev/null || true
85+ @rm -rf $(E2E_DEPLOYMENTS_PATH ) /* 2> /dev/null || true
86+ @echo " Cleanup complete"
87+
88+ test-coverage :
89+ @echo " Running tests with coverage..."
90+ go test -coverprofile=coverage.out ./...
91+ go tool cover -html=coverage.out -o coverage.html
92+ @echo " Coverage report generated: coverage.html"
93+
94+ test-all : test-unit test-e2e
3495
3596lint :
3697 @command -v golangci-lint > /dev/null 2>&1 && golangci-lint run ./... || \
0 commit comments