diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f28cb87 --- /dev/null +++ b/Makefile @@ -0,0 +1,87 @@ +.PHONY: help dev test deploy clean + +help: ## Show this help message + @echo 'YDN Makefile Commands' + @echo '=====================' + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}' + +dev: ## Start development stack + docker-compose -f docker/docker-compose.yml up -d + @echo "Development stack started. Access: http://localhost:8080" + +dev-logs: ## Show development logs + docker-compose -f docker/docker-compose.yml logs -f + +dev-stop: ## Stop development stack + docker-compose -f docker/docker-compose.yml down + +test-unit: ## Run unit tests + cd services/api && go test -v ./... + cd services/worker && go test -v ./... + cd services/middleware && go test -v ./... + cd pkg && go test -v ./... + +test-integration: ## Run integration tests + cd tests/integration && go test -v ./... + +test-e2e: ## Run end-to-end tests (requires local VM) + cd tests/e2e && go test -v ./... + +test: test-unit test-integration ## Run all tests + +terraform-local: ## Provision local VM for testing + cd infrastructure/terraform/environments/local && terraform init && terraform apply + +terraform-destroy-local: ## Destroy local VM + cd infrastructure/terraform/environments/local && terraform destroy + +ansible-local: ## Configure local VM via Ansible + cd infrastructure/ansible && ansible-playbook -i inventory/local.yml playbooks/provision.yml + +ansible-production: ## Configure production VMs via Ansible + cd infrastructure/ansible && ansible-playbook -i inventory/production.yml playbooks/provision.yml + +deploy: ## Deploy to production + @echo "Deploying to production..." + ./scripts/deploy.sh + +backup: ## Run backup scripts + ./scripts/backup.sh + +lint: ## Run linters + cd services/api && golangci-lint run + cd services/worker && golangci-lint run + cd services/middleware && golangci-lint run + +fmt: ## Format code + cd services/api && go fmt ./... + cd services/worker && go fmt ./... + cd services/middleware && go fmt ./... + cd pkg && go fmt ./... + +clean: ## Clean up build artifacts + cd services/api && go clean + cd services/worker && go clean + cd services/middleware && go clean + cd pkg && go clean + +build: ## Build all services + cd services/api && go build -o ../../bin/api . + cd services/worker && go build -o ../../bin/worker . + cd services/middleware && go build -o ../../bin/middleware . + +docker-build: ## Build Docker images + docker-compose -f docker/docker-compose.yml build + +docker-push: ## Push images to private registry + docker-compose -f docker/docker-compose.yml push + +setup: ## Setup development environment + @echo "Setting up YDN development environment..." + @mkdir -p bin logs tmp + @go mod download + @go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest + @cd infrastructure/terraform && terraform init -upgrade + @echo "Setup complete!" + +init: setup ## Alias for setup