CI/CD Pipeline - Northern Thailand Ping River Monitor / Test Suite (3.11) (push) Failing after 1m43s
CI/CD Pipeline - Northern Thailand Ping River Monitor / Build Docker Image (push) Skipped
CI/CD Pipeline - Northern Thailand Ping River Monitor / Integration Test with Services (push) Skipped
CI/CD Pipeline - Northern Thailand Ping River Monitor / Deploy to Staging (push) Skipped
CI/CD Pipeline - Northern Thailand Ping River Monitor / Deploy to Production (push) Skipped
CI/CD Pipeline - Northern Thailand Ping River Monitor / Performance Test (push) Skipped
CI/CD Pipeline - Northern Thailand Ping River Monitor / Code Quality (push) Successful in 45s
Documentation / Validate Documentation (push) Failing after 17s
Documentation / Generate API Documentation (push) Successful in 12s
Documentation / Build Sphinx Documentation (push) Successful in 19s
CI/CD Pipeline - Northern Thailand Ping River Monitor / Cleanup (push) Successful in 1s
Documentation / Documentation Summary (push) Successful in 4s
Removes 26 tracked files that no longer describe or serve the running system, verified one by one against the whole repo (source, tests, docs, README, Makefile, Dockerfile, .gitea workflows, pyproject, packaging spec) plus dynamic-reference paths, before deletion. Root (11): one-off launch/setup write-ups from the project's first weeks that document events which never happened the way they describe — a github.com publication (the remote is self-hosted Gitea) and a 15-minute scheduler (the service runs hourly). Also .gitlab-ci.yml (unused, CI is .gitea/), .env.postgres and setup.py.backup (a placeholder env file and a backup in version control), and the PyInstaller packaging trio build_executable.py / build_simple.py / ping-river-monitor.spec, which bundled docs that no longer exist and is not how this deploys. docs (9): stale guides superseded by DATABASE_DEPLOYMENT_GUIDE, GITEA_WORKFLOWS, FLOOD_FORECASTING and DATA_SOURCES, plus two snapshots (PROJECT_STATUS, PROJECT_STRUCTURE) describing a 4-file src/ that is now 39. scripts (5): one-shot bootstrap tools already run — init_git.sh/.bat, generate_badges.py, migrate_geolocation.py, encode_password.py. Every inbound reference was fixed rather than left dangling: README doc index and migration section, three Makefile targets, the docs.yml summary step, and the GITEA_WORKFLOWS resource list. src/ is deliberately untouched. The audit proposed removing several live modules; verification showed those proposals were mis-scoped and would have broken production. .gitignore now covers the agent tooling dirs, model eval output and editor/shell leftovers — the working tree had collected 56 zero-byte files named after fragments of shell commands. 136 tests pass; production modules import clean.
181 lines
4.5 KiB
Makefile
181 lines
4.5 KiB
Makefile
# Northern Thailand Ping River Monitor - Makefile
|
|
|
|
.PHONY: help install install-dev test test-coverage lint format clean run run-api docker-build docker-run docs
|
|
|
|
# Default target
|
|
help:
|
|
@echo "Northern Thailand Ping River Monitor - Available Commands:"
|
|
@echo ""
|
|
@echo "Setup:"
|
|
@echo " install Install production dependencies"
|
|
@echo " install-dev Install development dependencies"
|
|
@echo ""
|
|
@echo "Development:"
|
|
@echo " test Run all tests"
|
|
@echo " test-cov Run tests with coverage report"
|
|
@echo " lint Run code linting"
|
|
@echo " format Format code with black and isort"
|
|
@echo " clean Clean up temporary files"
|
|
@echo ""
|
|
@echo "Running:"
|
|
@echo " run Run the monitor in continuous mode"
|
|
@echo " run-api Run the web API server"
|
|
@echo " run-test Run a single test cycle"
|
|
@echo " run-status Show system status"
|
|
@echo ""
|
|
@echo "Alerting:"
|
|
@echo " alert-check Check water levels and send alerts"
|
|
@echo " alert-test Send test Matrix message"
|
|
@echo ""
|
|
@echo "Distribution:"
|
|
@echo " build-exe Build standalone executable"
|
|
@echo " package Build and create distribution package"
|
|
@echo ""
|
|
@echo "Docker:"
|
|
@echo " docker-build Build Docker image"
|
|
@echo " docker-run Run with Docker Compose"
|
|
@echo " docker-stop Stop Docker services"
|
|
@echo ""
|
|
@echo "Database:"
|
|
@echo " setup-postgres Setup PostgreSQL database"
|
|
@echo " test-postgres Test PostgreSQL connection"
|
|
@echo " encode-password URL encode password for connection string"
|
|
@echo " migrate-sqlite Migrate SQLite data to PostgreSQL"
|
|
@echo " migrate-fast Fast migration with 10K batch size"
|
|
@echo " analyze-sqlite Analyze SQLite database structure (dry run)"
|
|
@echo ""
|
|
@echo "Documentation:"
|
|
@echo " docs Generate documentation"
|
|
|
|
# Installation
|
|
install:
|
|
uv sync --no-dev
|
|
|
|
install-dev:
|
|
uv sync
|
|
uv run pre-commit install
|
|
|
|
# Testing
|
|
test:
|
|
uv run pytest -q
|
|
|
|
test-cov:
|
|
uv run pytest --cov=src --cov-report=html --cov-report=term
|
|
|
|
# Code quality
|
|
lint:
|
|
uv run flake8 src/ --max-line-length=100
|
|
uv run mypy src/
|
|
|
|
format:
|
|
uv run black src/ *.py
|
|
uv run isort src/ *.py
|
|
|
|
# Cleanup
|
|
clean:
|
|
find . -type f -name "*.pyc" -delete
|
|
find . -type d -name "__pycache__" -delete
|
|
find . -type f -name "*.log" -delete
|
|
rm -rf .pytest_cache/
|
|
rm -rf .mypy_cache/
|
|
rm -rf htmlcov/
|
|
rm -rf dist/
|
|
rm -rf build/
|
|
rm -rf *.egg-info/
|
|
|
|
# Running
|
|
run:
|
|
uv run python run.py
|
|
|
|
run-api:
|
|
uv run python run.py --web-api
|
|
|
|
run-test:
|
|
uv run python run.py --test
|
|
|
|
run-status:
|
|
uv run python run.py --status
|
|
|
|
# Alerting
|
|
alert-check:
|
|
uv run python run.py --alert-check
|
|
|
|
alert-test:
|
|
uv run python run.py --alert-test
|
|
|
|
# Docker
|
|
docker-build:
|
|
docker build -t ping-river-monitor .
|
|
|
|
docker-run:
|
|
docker-compose -f docker-compose.victoriametrics.yml up -d
|
|
|
|
docker-stop:
|
|
docker-compose -f docker-compose.victoriametrics.yml down
|
|
|
|
docker-logs:
|
|
docker-compose -f docker-compose.victoriametrics.yml logs -f
|
|
|
|
# Documentation
|
|
docs:
|
|
cd docs && make html
|
|
|
|
# Monitoring
|
|
health-check:
|
|
curl -f http://localhost:8000/health || exit 1
|
|
|
|
metrics:
|
|
curl -s http://localhost:8000/metrics | jq .
|
|
|
|
# Development helpers
|
|
dev-setup: install-dev
|
|
cp .env.example .env
|
|
@echo "Development environment set up!"
|
|
@echo "Edit .env file with your configuration"
|
|
|
|
# Production deployment
|
|
deploy-check:
|
|
uv run python run.py --test
|
|
@echo "Deployment check passed!"
|
|
|
|
# Database management
|
|
setup-postgres:
|
|
uv run python scripts/setup_postgres.py
|
|
|
|
test-postgres:
|
|
uv run python -c "from scripts.setup_postgres import test_postgres_connection; from src.config import Config; config = Config.get_database_config(); test_postgres_connection(config['connection_string'])"
|
|
|
|
migrate-sqlite:
|
|
uv run python scripts/migrate_sqlite_to_postgres.py
|
|
|
|
migrate-fast:
|
|
uv run python scripts/migrate_sqlite_to_postgres.py --fast
|
|
|
|
analyze-sqlite:
|
|
uv run python scripts/migrate_sqlite_to_postgres.py --dry-run
|
|
|
|
# Git helpers
|
|
git-setup:
|
|
git remote add origin https://git.b4l.co.th/B4L/Northern-Thailand-Ping-River-Monitor.git
|
|
@echo "Git remote configured!"
|
|
|
|
# Quick start
|
|
quick-start: install dev-setup run-test
|
|
@echo "Quick start completed!"
|
|
@echo "Run 'make run-api' to start the web interface"
|
|
|
|
# Gitea Actions
|
|
validate-workflows:
|
|
@echo "Validating Gitea Actions workflows..."
|
|
@for file in .gitea/workflows/*.yml; do \
|
|
echo "Checking $$file..."; \
|
|
uv run python -c "import yaml; yaml.safe_load(open('$$file', encoding='utf-8'))" || exit 1; \
|
|
done
|
|
@echo "✅ All workflows are valid"
|
|
|
|
workflow-test:
|
|
@echo "Testing workflow components locally..."
|
|
make test
|
|
make lint
|
|
make format
|
|
@echo "✅ Workflow test completed"
|