freeleaps-ops/apps/gitea-webhook-ambassador-python/Makefile
Nicolas f6c515157c feat: 添加 Python 版本的 Gitea Webhook Ambassador
- 新增完整的 Python 实现,替代 Go 版本
- 添加 Web 登录界面和仪表板
- 实现 JWT 认证和 API 密钥管理
- 添加数据库存储功能
- 保持与 Go 版本一致的目录结构和启动脚本
- 包含完整的文档和测试脚本
2025-07-20 21:17:10 +08:00

143 lines
4.1 KiB
Makefile

.PHONY: build clean test lint docker-build docker-push run help install init
# Variables
APP_NAME := gitea-webhook-ambassador
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
PYTHON := python3
PIP := pip
VENV := venv
CONFIG_FILE := config.yaml
# Python commands
PYTHON_FILES := $(shell find . -name "*.py" -type f)
REQUIREMENTS := requirements.txt
# Default target
.DEFAULT_GOAL := help
# Install dependencies
install:
@echo "Installing dependencies..."
$(PYTHON) -m venv $(VENV)
. $(VENV)/bin/activate && $(PIP) install -r $(REQUIREMENTS)
# Initialize database
init:
@echo "Initializing database..."
. $(VENV)/bin/activate && $(PYTHON) -c "from app.models.database import create_tables; create_tables(); print('Database initialized')"
# Build (for Python, this means installing dependencies)
build: install
@echo "Python application ready"
# Clean build artifacts
clean:
@echo "Cleaning up..."
@rm -rf $(VENV)
@rm -f *.db
@rm -rf logs/
@rm -f *.pid
# Run tests
test:
@echo "Running tests..."
. $(VENV)/bin/activate && $(PYTHON) test_enhanced_features.py
# Run linter
lint:
@echo "Running linter..."
. $(VENV)/bin/activate && flake8 app/ --max-line-length=120 --ignore=E501,W503
# Build Docker image
docker-build:
@echo "Building Docker image $(APP_NAME):$(VERSION)..."
docker build -t $(APP_NAME):$(VERSION) .
docker tag $(APP_NAME):$(VERSION) $(APP_NAME):latest
# Push Docker image to registry
docker-push: docker-build
@echo "Pushing Docker image $(APP_NAME):$(VERSION)..."
docker push $(APP_NAME):$(VERSION)
docker push $(APP_NAME):latest
# Run locally
run: build init
@echo "Starting $(APP_NAME)..."
. $(VENV)/bin/activate && $(PYTHON) -m uvicorn app.main_enhanced:app --host 0.0.0.0 --port 8000
# Run in background
start: build init
@echo "Starting $(APP_NAME) in background..."
. $(VENV)/bin/activate && nohup $(PYTHON) -m uvicorn app.main_enhanced:app --host 0.0.0.0 --port 8000 > logs/service.log 2>&1 &
@echo $$! > service.pid
@echo "Service started with PID $$(cat service.pid)"
# Stop service
stop:
@if [ -f service.pid ]; then \
echo "Stopping $(APP_NAME)..."; \
kill $$(cat service.pid) 2>/dev/null || true; \
rm -f service.pid; \
echo "Service stopped"; \
else \
echo "No service.pid found"; \
fi
# Restart service
restart: stop start
# Show service status
status:
@if [ -f service.pid ]; then \
PID=$$(cat service.pid); \
if ps -p $$PID > /dev/null 2>&1; then \
echo "$(APP_NAME) is running (PID: $$PID)"; \
echo "📝 Log file: logs/service.log"; \
echo "🌐 Access: http://localhost:8000"; \
else \
echo "$(APP_NAME) is not running (PID file exists but process not found)"; \
rm -f service.pid; \
fi; \
else \
echo "$(APP_NAME) is not running"; \
fi
# Show logs
logs:
@if [ -f logs/service.log ]; then \
echo "📝 Latest logs (last 50 lines):"; \
echo "----------------------------------------"; \
tail -n 50 logs/service.log; \
echo "----------------------------------------"; \
else \
echo "❌ No log file found"; \
fi
# Follow logs
follow:
@if [ -f logs/service.log ]; then \
echo "📝 Following logs (Ctrl+C to exit):"; \
tail -f logs/service.log; \
else \
echo "❌ No log file found"; \
fi
# Show help
help:
@echo "Gitea Webhook Ambassador (Python) - Makefile commands:"
@echo " install - Install Python dependencies"
@echo " init - Initialize database"
@echo " build - Install dependencies (alias for install)"
@echo " clean - Remove build artifacts and logs"
@echo " test - Run tests"
@echo " lint - Run linter"
@echo " docker-build - Build Docker image"
@echo " docker-push - Build and push Docker image to registry"
@echo " run - Install, init and run locally (foreground)"
@echo " start - Install, init and start in background"
@echo " stop - Stop background service"
@echo " restart - Restart background service"
@echo " status - Show service status"
@echo " logs - Show latest logs"
@echo " follow - Follow logs in real-time"
@echo " help - Show this help message"