Files
cv-site/Makefile
T

109 lines
3.2 KiB
Makefile
Raw Normal View History

2025-10-30 12:19:57 +00:00
.PHONY: run build test clean dev prod docker-build docker-run ci-test ci-build health-check install-service update-service
2025-10-20 08:54:21 +01:00
# Development
dev:
@echo "🚀 Starting development server..."
GO_ENV=development go run main.go
# Production
prod:
@echo "🚀 Starting production server..."
GO_ENV=production go run main.go
# Build
build:
@echo "🔨 Building binary..."
go build -o cv-server -ldflags="-s -w" .
@echo "✓ Binary created: ./cv-server"
# Run built binary
run: build
./cv-server
# Test
test:
@echo "🧪 Testing endpoints..."
@echo "\n1. Health check:"
@curl -s http://localhost:1999/health | jq .
2025-10-20 08:54:21 +01:00
@echo "\n2. English CV (first 50 chars):"
@curl -s "http://localhost:1999/?lang=en" | head -c 50
2025-10-20 08:54:21 +01:00
@echo "\n\n3. Spanish CV content (first 50 chars):"
@curl -s "http://localhost:1999/cv?lang=es" | head -c 50
2025-10-20 08:54:21 +01:00
@echo "\n\n4. Security headers:"
@curl -I http://localhost:1999/ 2>&1 | grep -E "^(X-|Content-Security)"
2025-10-20 08:54:21 +01:00
@echo "\n✓ All tests complete"
# Test error handling
test-errors:
@echo "🧪 Testing error handling..."
@echo "\n1. Invalid language:"
@curl -i "http://localhost:1999/?lang=invalid" 2>&1 | head -15
2025-10-20 08:54:21 +01:00
@echo "\n2. Error logging check"
@echo "✓ Error tests complete"
# Clean
clean:
@echo "🧹 Cleaning build artifacts..."
rm -f cv-server
@echo "✓ Clean complete"
# Docker
docker-build:
@echo "🐳 Building Docker image..."
docker build -t cv-server:latest .
@echo "✓ Docker image built"
docker-run:
@echo "🐳 Running Docker container..."
docker run -p 1999:1999 cv-server:latest
2025-10-20 08:54:21 +01:00
2025-10-30 12:19:57 +00:00
# CI/CD Targets
ci-test:
@echo "🧪 Running CI tests..."
go test -v -race -coverprofile=coverage.txt -covermode=atomic ./...
@echo "✓ CI tests complete"
ci-build:
@echo "🔨 Building for CI/CD..."
mkdir -p build
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o build/cv-server .
@echo "✓ CI build complete: build/cv-server"
health-check:
@echo "🏥 Running health check..."
@./scripts/healthcheck.sh
install-service:
@echo "📦 Installing systemd service..."
sudo cp config/systemd/cv.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable cv
@echo "✓ Service installed and enabled"
update-service:
@echo "🔄 Updating systemd service..."
sudo cp config/systemd/cv.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl restart cv
@echo "✓ Service updated and restarted"
2025-10-20 08:54:21 +01:00
# Help
help:
@echo "Available commands:"
2025-10-30 12:19:57 +00:00
@echo " make dev - Run in development mode (hot-reload enabled)"
@echo " make prod - Run in production mode"
@echo " make build - Build production binary"
@echo " make run - Build and run binary"
@echo " make test - Test all endpoints"
@echo " make test-errors - Test error handling"
@echo " make clean - Remove build artifacts"
@echo " make docker-build - Build Docker image"
@echo " make docker-run - Run Docker container"
@echo ""
@echo "CI/CD commands:"
@echo " make ci-test - Run tests for CI pipeline"
@echo " make ci-build - Build binary for CI/CD"
@echo " make health-check - Check service health"
@echo " make install-service - Install systemd service"
@echo " make update-service - Update and restart service"