161 lines
6.0 KiB
Makefile
161 lines
6.0 KiB
Makefile
.PHONY: build build-manager build-runner build-web run-manager run-runner run cleanup cleanup-manager cleanup-runner kill-all clean test help
|
|
|
|
# Build all components
|
|
build: clean-bin build-manager build-runner
|
|
|
|
# Build manager
|
|
build-manager: clean-bin build-web
|
|
go build -o bin/manager ./cmd/manager
|
|
|
|
# Build runner
|
|
build-runner: clean-bin
|
|
GOOS=linux GOARCH=amd64 go build -o bin/runner ./cmd/runner
|
|
|
|
# Build web UI
|
|
build-web: clean-web
|
|
cd web && npm install && npm run build
|
|
|
|
# Cleanup manager (database and storage)
|
|
cleanup-manager:
|
|
@echo "Cleaning up manager database and storage..."
|
|
@rm -f jiggablend.db 2>/dev/null || true
|
|
@rm -f jiggablend.db-shm 2>/dev/null || true
|
|
@rm -f jiggablend.db-wal 2>/dev/null || true
|
|
@rm -rf jiggablend-storage 2>/dev/null || true
|
|
@echo "Manager cleanup complete"
|
|
|
|
# Cleanup runner workspaces
|
|
cleanup-runner:
|
|
@echo "Cleaning up runner workspaces..."
|
|
@rm -rf jiggablend-workspaces jiggablend-workspace* *workspace* 2>/dev/null || true
|
|
@echo "Runner cleanup complete"
|
|
|
|
# Cleanup both manager and runner
|
|
cleanup: cleanup-manager cleanup-runner
|
|
|
|
# Kill all manager and runner processes
|
|
kill-all:
|
|
@echo "Killing all manager and runner processes..."
|
|
@# Kill manager processes (compiled binaries in bin/, root, and go run)
|
|
@-pkill -f "bin/manager" 2>/dev/null || true
|
|
@-pkill -f "\./manager" 2>/dev/null || true
|
|
@-pkill -f "manager" 2>/dev/null || true
|
|
@-pkill -f "main.*cmd/manager" 2>/dev/null || true
|
|
@-pkill -f "go run.*cmd/manager" 2>/dev/null || true
|
|
@# Kill runner processes (compiled binaries in bin/, root, and go run)
|
|
@-pkill -f "bin/runner" 2>/dev/null || true
|
|
@-pkill -f "\./runner" 2>/dev/null || true
|
|
@-pkill -f "runner" 2>/dev/null || true
|
|
@-pkill -f "main.*cmd/runner" 2>/dev/null || true
|
|
@-pkill -f "go run.*cmd/runner" 2>/dev/null || true
|
|
@# Wait a moment for graceful shutdown
|
|
@echo "Waiting for 5 seconds for graceful shutdown..."
|
|
@sleep 1
|
|
@echo "5"
|
|
@sleep 1
|
|
@echo "4"
|
|
@sleep 1
|
|
@echo "3"
|
|
@sleep 1
|
|
@echo "2"
|
|
@sleep 1
|
|
@echo "1"
|
|
@sleep 1
|
|
@echo "0"
|
|
|
|
@# Check if any manager or runner processes are still running
|
|
@MANAGER_COUNT=$$(pgrep -f "bin/manager\|\./manager\|manager\|main.*cmd/manager\|go run.*cmd/manager" | wc -l); \
|
|
RUNNER_COUNT=$$(pgrep -f "bin/runner\|\./runner\|runner\|main.*cmd/runner\|go run.*cmd/runner" | wc -l); \
|
|
if [ $$MANAGER_COUNT -eq 0 ] && [ $$RUNNER_COUNT -eq 0 ]; then \
|
|
echo "All manager and runner processes have shut down gracefully"; \
|
|
exit 0; \
|
|
else \
|
|
echo "Some processes still running ($$MANAGER_COUNT managers, $$RUNNER_COUNT runners), proceeding with force kill..."; \
|
|
fi
|
|
@# Force kill any remaining processes
|
|
@-pkill -9 -f "bin/manager" 2>/dev/null || true
|
|
@-pkill -9 -f "\./manager" 2>/dev/null || true
|
|
@-pkill -9 -f "main.*cmd/manager" 2>/dev/null || true
|
|
@-pkill -9 -f "go run.*cmd/manager" 2>/dev/null || true
|
|
@-pkill -9 -f "bin/runner" 2>/dev/null || true
|
|
@-pkill -9 -f "\./runner" 2>/dev/null || true
|
|
@-pkill -9 -f "main.*cmd/runner" 2>/dev/null || true
|
|
@-pkill -9 -f "go run.*cmd/runner" 2>/dev/null || true
|
|
@echo "All manager and runner processes killed after 5 seconds"
|
|
|
|
# Run all parallel
|
|
run: cleanup-manager cleanup-runner build-manager build-runner
|
|
@echo "Starting manager and runner in parallel..."
|
|
@echo "Press Ctrl+C to stop both..."
|
|
@echo "Note: This will create a test API key for the runner to use"
|
|
@trap 'kill $$MANAGER_PID $$RUNNER_PID 2>/dev/null; exit' INT TERM; \
|
|
FIXED_API_KEY=jk_r0_test_key_123456789012345678901234567890 ENABLE_LOCAL_AUTH=true LOCAL_TEST_EMAIL=test@example.com LOCAL_TEST_PASSWORD=testpassword bin/manager & \
|
|
MANAGER_PID=$$!; \
|
|
sleep 2; \
|
|
API_KEY=jk_r0_test_key_123456789012345678901234567890 bin/runner & \
|
|
RUNNER_PID=$$!; \
|
|
wait $$MANAGER_PID $$RUNNER_PID
|
|
|
|
# Run manager with test API key
|
|
# Note: ENABLE_LOCAL_AUTH enables local user registration/login
|
|
# LOCAL_TEST_EMAIL and LOCAL_TEST_PASSWORD create a test user on startup (if it doesn't exist)
|
|
# FIXED_API_KEY provides a pre-configured API key for testing (jk_r0_... format)
|
|
# The manager will accept this API key for runner registration
|
|
run-manager: cleanup-manager build-manager
|
|
FIXED_API_KEY=jk_r0_test_key_123456789012345678901234567890 ENABLE_LOCAL_AUTH=true LOCAL_TEST_EMAIL=test@example.com LOCAL_TEST_PASSWORD=testpassword bin/manager
|
|
|
|
# Run runner with test API key
|
|
# Note: API_KEY must match what the manager accepts (see run-manager)
|
|
# The runner will use this API key for all authentication with the manager
|
|
run-runner: cleanup-runner build-runner
|
|
API_KEY=jk_r0_test_key_123456789012345678901234567890 bin/runner
|
|
|
|
# Clean bin build artifacts
|
|
clean-bin:
|
|
rm -rf bin/
|
|
|
|
# Clean web build artifacts
|
|
clean-web:
|
|
rm -rf web/dist/
|
|
|
|
# Run tests
|
|
test:
|
|
go test ./... -timeout 30s
|
|
|
|
# Show help
|
|
help:
|
|
@echo "Jiggablend Build and Run Makefile"
|
|
@echo ""
|
|
@echo "Build targets:"
|
|
@echo " build - Build manager, runner, and web UI"
|
|
@echo " build-manager - Build manager with web UI"
|
|
@echo " build-runner - Build runner binary"
|
|
@echo " build-web - Build web UI"
|
|
@echo ""
|
|
@echo "Run targets:"
|
|
@echo " run - Run manager and runner in parallel with test API key"
|
|
@echo " run-manager - Run manager with test API key enabled"
|
|
@echo " run-runner - Run runner with test API key"
|
|
@echo ""
|
|
@echo "Cleanup targets:"
|
|
@echo " cleanup - Clean manager and runner data"
|
|
@echo " cleanup-manager - Clean manager database and storage"
|
|
@echo " cleanup-runner - Clean runner workspaces and API keys"
|
|
@echo ""
|
|
@echo "Other targets:"
|
|
@echo " clean - Clean build artifacts"
|
|
@echo " kill-all - Kill all running manager and runner processes (binaries in bin/, root, or go run)"
|
|
@echo " test - Run Go tests"
|
|
@echo " help - Show this help"
|
|
@echo ""
|
|
@echo "API Key System:"
|
|
@echo " - FIXED_API_KEY: Pre-configured API key for manager (optional)"
|
|
@echo " - API_KEY: API key for runner authentication"
|
|
@echo " - Format: jk_r{N}_{32-char-hex}"
|
|
@echo " - Generate via admin UI or set FIXED_API_KEY for testing"
|
|
@echo ""
|
|
@echo "Timeouts:"
|
|
@echo " - Use 'timeout <seconds> make run' to prevent hanging during testing"
|
|
@echo " - Example: timeout 30s make run"
|
|
|