- 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
187 lines
5.8 KiB
Makefile
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)"
|