Files
peikarband/Makefile
Ehsan.Asadi f19f60015b
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/manual/woodpecker Pipeline failed
feat: improve Makefile help with base image commands
Added:
 Better formatting with emojis
 Base image commands section
 Quick start guide
 Grouped commands logically

Run 'make help' to see all commands!
2025-12-30 22:46:01 +03:30

209 lines
7.2 KiB
Makefile
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Peikarband Platform - Makefile
REGISTRY ?= harbor.peikarband.ir
IMAGE_NAME ?= peikarband/landing
VERSION ?= $(shell git describe --tags --always --dirty)
HELM_RELEASE ?= peikarband
NAMESPACE ?= production
DOCKER_BUILDKIT ?= 1
.PHONY: help install dev kill-dev test lint format clean docker-up docker-down migrate
help:
@echo "════════════════════════════════════════"
@echo " 📋 Peikarband Landing - Available Commands"
@echo "════════════════════════════════════════"
@echo ""
@echo "🔧 Development:"
@echo " make install - Install dependencies"
@echo " make dev - Run development server"
@echo " make kill-dev - Kill development server (ports 3000 & 8000)"
@echo " make test - Run tests"
@echo " make lint - Run linters"
@echo " make format - Format code"
@echo " make clean - Clean temporary files"
@echo ""
@echo "🐳 Docker - Base Image:"
@echo " make docker-build-base - Build base image (Python + Node.js + bun)"
@echo " make docker-push-base - Push base image to Harbor"
@echo ""
@echo "🐳 Docker - Application:"
@echo " make docker-build - Build application image"
@echo " make docker-push - Push application image to Harbor"
@echo " make docker-login - Login to Harbor registry"
@echo " make docker-up - Start Docker Compose"
@echo " make docker-down - Stop Docker Compose"
@echo ""
@echo "☸️ Kubernetes/Helm:"
@echo " make helm-lint - Lint Helm chart"
@echo " make helm-package - Package Helm chart"
@echo " make helm-install - Install Helm chart"
@echo " make helm-upgrade - Upgrade Helm chart"
@echo " make helm-uninstall - Uninstall Helm chart"
@echo " make k8s-deploy - Full deployment pipeline"
@echo ""
@echo "🗄️ Database:"
@echo " make migrate - Run database migrations"
@echo " make seed - Seed database with initial data"
@echo ""
@echo "════════════════════════════════════════"
@echo " Quick Start:"
@echo "════════════════════════════════════════"
@echo ""
@echo "1⃣ Build & Push Base (once):"
@echo " make docker-login"
@echo " make docker-build-base"
@echo " make docker-push-base"
@echo ""
@echo "2⃣ Build & Push App:"
@echo " make docker-build"
@echo " make docker-push"
@echo ""
@echo "3⃣ Deploy:"
@echo " make k8s-deploy"
@echo ""
install:
pip install -r requirements.txt
pip install -r requirements-dev.txt
pre-commit install
dev:
cd peikarband && python3 -m reflex run
kill-dev:
@echo "Killing processes on ports 3000 and 8000..."
@lsof -ti:3000 -ti:8000 2>/dev/null | xargs kill -9 2>/dev/null || true
@pkill -9 -f reflex 2>/dev/null || true
@echo "Done!"
test:
pytest tests/ -v --cov=src --cov-report=html
lint:
flake8 src/
mypy src/
black --check src/
isort --check-only src/
format:
black src/
isort src/
clean:
find . -type d -name "__pycache__" -exec rm -rf {} +
find . -type f -name "*.pyc" -delete
find . -type f -name "*.pyo" -delete
find . -type d -name ".pytest_cache" -exec rm -rf {} +
find . -type d -name ".mypy_cache" -exec rm -rf {} +
find . -type d -name "*.egg-info" -exec rm -rf {} +
rm -rf .coverage htmlcov/
rm -rf dist/
# Docker commands
docker-build-base:
@echo "════════════════════════════════════════"
@echo " 🔨 Building Base Image"
@echo "════════════════════════════════════════"
DOCKER_BUILDKIT=$(DOCKER_BUILDKIT) docker buildx build \
-f docker/Dockerfile.base \
-t hub.peikarband.ir/peikarband/landing:base \
-t hub.peikarband.ir/peikarband/landing:base-python3.11-node20 \
--build-arg PYTHON_VERSION=3.11 \
--build-arg NODE_VERSION=20 \
--platform linux/amd64 \
--load \
.
@echo ""
@echo "✅ Base image built: hub.peikarband.ir/peikarband/landing:base"
@echo ""
docker-push-base:
@echo "════════════════════════════════════════"
@echo " 📤 Pushing Base Image"
@echo "════════════════════════════════════════"
docker push hub.peikarband.ir/peikarband/landing:base
docker push hub.peikarband.ir/peikarband/landing:base-python3.11-node20
@echo ""
@echo "✅ Base image pushed successfully!"
@echo ""
docker-build:
@echo "════════════════════════════════════════"
@echo " 🔨 Building Application Image"
@echo "════════════════════════════════════════"
DOCKER_BUILDKIT=$(DOCKER_BUILDKIT) docker buildx build \
-f docker/Dockerfile \
-t hub.peikarband.ir/peikarband/landing:$(VERSION) \
-t hub.peikarband.ir/peikarband/landing:latest \
--build-arg BASE_IMAGE=hub.peikarband.ir/peikarband/landing:base \
--build-arg VERSION=$(VERSION) \
--build-arg BUILD_DATE=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ') \
--platform linux/amd64 \
--load \
.
@echo ""
@echo "✅ Application image built: hub.peikarband.ir/peikarband/landing:$(VERSION)"
@echo ""
docker-push:
@echo "════════════════════════════════════════"
@echo " 📤 Pushing Application Image"
@echo "════════════════════════════════════════"
docker push hub.peikarband.ir/peikarband/landing:$(VERSION)
docker push hub.peikarband.ir/peikarband/landing:latest
@echo ""
@echo "✅ Application image pushed successfully!"
@echo ""
docker-login:
@echo "Logging in to Harbor registry..."
@docker login hub.peikarband.ir
docker-up:
docker-compose -f docker/docker-compose.yml up -d
docker-down:
docker-compose -f docker/docker-compose.yml down
# Helm commands
helm-lint:
helm lint helm/peikarband
helm-template:
helm template $(HELM_RELEASE) helm/peikarband --debug
helm-package:
helm package helm/peikarband --destination .
helm-install:
helm install $(HELM_RELEASE) helm/peikarband \
--namespace $(NAMESPACE) \
--create-namespace \
--set image.repository=$(REGISTRY)/$(IMAGE_NAME) \
--set image.tag=$(VERSION) \
--wait
helm-upgrade:
helm upgrade --install $(HELM_RELEASE) helm/peikarband \
--namespace $(NAMESPACE) \
--set image.repository=$(REGISTRY)/$(IMAGE_NAME) \
--set image.tag=$(VERSION) \
--wait
helm-uninstall:
helm uninstall $(HELM_RELEASE) --namespace $(NAMESPACE)
# Kubernetes deployment (full pipeline)
k8s-deploy: docker-build docker-push helm-upgrade
@echo "Deployment complete!"
@echo "Check status: kubectl get pods -n $(NAMESPACE)"
# Database
migrate:
cd peikarband && alembic -c config/alembic.ini upgrade head
seed:
cd peikarband && python3 tools/scripts/seed_database.py