Files
Mimante/Mimante/Makefile
Alberto Balbo 29724f5baf Refactoring: Docker, CI/CD, tema WPF, DB avanzato, UX
- Aggiunto sistema completo di build/deploy Docker, Makefile, compose, .env, workflow CI/CD (Gitea, GitHub Actions)
- Nuovo servizio DatabaseService con migrations, healthcheck, backup, ottimizzazione, info
- Endpoint /health per healthcheck container
- Impostazioni avanzate di avvio aste (ricorda stato, auto-start, default nuove aste)
- Nuovo tema grafico WPF: palette, sidebar, layout griglia, log colorati, badge, cards, modali, responsività
- Migliorato calcolo valore prodotto, logica convenienza, blocco puntate non convenienti, log dettagliati
- Semplificate e migliorate pagine FreeBids, Settings, Statistics; rimossa Browser.razor
- Aggiornato .gitignore, documentazione, struttura progetto
- Base solida per future funzionalità avanzate e deploy professionale
2025-12-23 21:35:44 +01:00

187 lines
5.8 KiB
Makefile

.PHONY: help build run stop logs clean deploy backup test
# Variables
IMAGE_NAME := autobidder
CONTAINER_NAME := autobidder
REGISTRY := 192.168.30.23/Alby96
TAG := latest
COMPOSE_FILE := docker-compose.yml
# Colors
GREEN := \033[0;32m
YELLOW := \033[1;33m
NC := \033[0m
help: ## Mostra questo messaggio di aiuto
@echo "$(GREEN)AutoBidder - Makefile Commands$(NC)"
@echo "================================"
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " $(YELLOW)%-15s$(NC) %s\n", $$1, $$2}'
build: ## Build Docker image
@echo "$(GREEN)Building Docker image...$(NC)"
docker build -t $(IMAGE_NAME):$(TAG) .
build-no-cache: ## Build Docker image senza cache
@echo "$(GREEN)Building Docker image (no cache)...$(NC)"
docker build --no-cache -t $(IMAGE_NAME):$(TAG) .
run: ## Avvia container con docker-compose
@echo "$(GREEN)Starting containers...$(NC)"
docker-compose -f $(COMPOSE_FILE) up -d
stop: ## Ferma container
@echo "$(GREEN)Stopping containers...$(NC)"
docker-compose -f $(COMPOSE_FILE) down
restart: stop run ## Restart container
logs: ## Mostra logs real-time
docker-compose -f $(COMPOSE_FILE) logs -f
logs-tail: ## Mostra ultimi 100 logs
docker-compose -f $(COMPOSE_FILE) logs --tail=100
ps: ## Mostra status container
docker-compose -f $(COMPOSE_FILE) ps
shell: ## Apri shell nel container
docker-compose -f $(COMPOSE_FILE) exec autobidder /bin/bash
clean: ## Pulisci container, immagini e volumi
@echo "$(GREEN)Cleaning up...$(NC)"
docker-compose -f $(COMPOSE_FILE) down -v
docker rmi $(IMAGE_NAME):$(TAG) 2>/dev/null || true
clean-all: ## Pulisci tutto inclusi dati (PERICOLOSO!)
@echo "$(YELLOW)Warning: This will delete all data!$(NC)"
@read -p "Are you sure? [y/N] " -n 1 -r; \
echo; \
if [[ $$REPLY =~ ^[Yy]$$ ]]; then \
chmod +x scripts/clean.sh; \
./scripts/clean.sh; \
fi
clean-build: ## Pulisci solo build artifacts
@echo "$(GREEN)Cleaning build artifacts...$(NC)"
dotnet clean
rm -rf bin/ obj/ publish/
tag: ## Tag immagine per registry
@echo "$(GREEN)Tagging image for registry...$(NC)"
docker tag $(IMAGE_NAME):$(TAG) $(REGISTRY)/$(IMAGE_NAME):$(TAG)
push: tag ## Push immagine su registry
@echo "$(GREEN)Pushing image to registry...$(NC)"
docker push $(REGISTRY)/$(IMAGE_NAME):$(TAG)
pull: ## Pull immagine da registry
@echo "$(GREEN)Pulling image from registry...$(NC)"
docker pull $(REGISTRY)/$(IMAGE_NAME):$(TAG)
login: ## Login al registry Gitea
@echo "$(GREEN)Logging in to registry...$(NC)"
@read -p "Username: " username; \
docker login $(REGISTRY) -u $$username
deploy: pull run ## Deploy (pull + run)
@echo "$(GREEN)Deployment completed!$(NC)"
backup: ## Backup database
@echo "$(GREEN)Creating backup...$(NC)"
@mkdir -p ./data/backups
@if [ -f ./data/autobidder.db ]; then \
cp ./data/autobidder.db ./data/backups/autobidder_$$(date +%Y%m%d_%H%M%S).db; \
echo "$(GREEN)Backup created$(NC)"; \
else \
echo "$(YELLOW)No database found$(NC)"; \
fi
restore: ## Restore database da backup
@echo "$(GREEN)Available backups:$(NC)"
@ls -1 ./data/backups/*.db 2>/dev/null || echo "No backups found"
@read -p "Enter backup filename: " backup; \
if [ -f ./data/backups/$$backup ]; then \
cp ./data/backups/$$backup ./data/autobidder.db; \
echo "$(GREEN)Database restored$(NC)"; \
docker-compose restart; \
else \
echo "$(YELLOW)Backup not found$(NC)"; \
fi
test: ## Test build locale
@echo "$(GREEN)Testing build...$(NC)"
dotnet build -c Release
dotnet test --no-build
publish: ## Publish artifacts locali
@echo "$(GREEN)Publishing artifacts...$(NC)"
dotnet publish -c Release -o ./publish
dev: ## Avvia in modalità development
@echo "$(GREEN)Starting in development mode...$(NC)"
dotnet run
dev-docker: ## Avvia con Docker Compose dev
@echo "$(GREEN)Starting with Docker Compose (dev)...$(NC)"
docker-compose -f docker-compose.dev.yml up
dev-docker-debug: ## Avvia con Docker Compose + SQLite browser
@echo "$(GREEN)Starting with Docker Compose + SQLite browser...${NC}"
docker-compose -f docker-compose.dev.yml --profile debug up
watch: ## Avvia con hot-reload
@echo "$(GREEN)Starting with hot-reload...$(NC)"
dotnet watch run
test-docker: ## Test Docker build locale
@echo "$(GREEN)Testing Docker build...$(NC)"
@chmod +x scripts/test-docker.sh
@./scripts/test-docker.sh
health: ## Verifica health container
@echo "$(GREEN)Checking container health...$(NC)"
@docker inspect --format='{{.State.Health.Status}}' $(CONTAINER_NAME) 2>/dev/null || echo "Container not running"
stats: ## Mostra statistiche container
docker stats $(CONTAINER_NAME) --no-stream
db-info: ## Mostra info database
@echo "$(GREEN)Database information:$(NC)"
@if [ -f ./data/autobidder.db ]; then \
ls -lh ./data/autobidder.db; \
echo "Backups:"; \
ls -lh ./data/backups/*.db 2>/dev/null | tail -5 || echo "No backups"; \
else \
echo "$(YELLOW)No database found$(NC)"; \
fi
optimize: ## Ottimizza database (VACUUM)
@echo "$(GREEN)Optimizing database...$(NC)"
docker-compose exec autobidder sqlite3 /app/data/autobidder.db "VACUUM;"
@echo "$(GREEN)Database optimized$(NC)"
update: ## Update immagine e restart
@echo "$(GREEN)Updating AutoBidder...$(NC)"
docker-compose pull
docker-compose up -d
@echo "$(GREEN)Update completed$(NC)"
version: ## Mostra versione
@echo "$(GREEN)AutoBidder Version:$(NC)"
@cat VERSION 2>/dev/null || echo "VERSION file not found"
@docker-compose exec autobidder dotnet AutoBidder.dll --version 2>/dev/null || echo "Container not running"
release: ## Crea nuova release (interattivo)
@echo "$(GREEN)Creating new release...$(NC)"
@chmod +x scripts/release.sh
@./scripts/release.sh
setup: ## Setup ambiente sviluppo
@echo "$(GREEN)Setting up development environment...$(NC)"
dotnet restore
@mkdir -p ./data ./data/backups ./cert ./logs
@echo "$(GREEN)Setup completed$(NC)"
ci: build test ## Esegui CI pipeline locale
@echo "$(GREEN)CI pipeline completed$(NC)"