arm-scan-gateway/Makefile
Andrey Epifancev 27fe24cb5e Срез 0 [6.2]: make check-full = check + test-integration + docker-build
Добавлена цель docker-build (IMAGE ?= scan-gateway:dev, контекст — корень репозитория).
check-full вызывает шаги последовательно через $(MAKE), поэтому порядок и остановка на
первой ошибке гарантированы и при make -j. README/CLAUDE.md и help приведены в соответствие,
отмечены задача 15 плана и пункт 6.2 tasks.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-04 04:38:16 +04:00

62 lines
3.6 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Команды разработки scan-gateway. Запуск из корня репозитория; рецепты сами переходят в api/ (как и в arm-core),
# поэтому backend-команды работают с каталогом api/ и окружением api/.venv.
VENV := api/.venv
BIN := $(CURDIR)/$(VENV)/bin
# docs/dev — соседний репозиторий и в основном workspace, и в worktree .wt/<срез>/
COMPOSE_FILE ?= ../docs/dev/docker-compose.yml
COMPOSE_PROJECT ?= arm-ka
IMAGE ?= scan-gateway:dev
.PHONY: help venv lint test test-integration check docker-build check-full up emulator
help:
@echo "venv - окружение api/.venv (Python 3.11) с зависимостями без raisa_*"
@echo "lint - ruff check, ruff format --check, mypy src"
@echo "test - pytest без интеграционных тестов"
@echo "test-integration - интеграционные тесты (нужны NATS и MinIO: make up)"
@echo "check - lint + test"
@echo "docker-build - собрать docker-образ $(IMAGE) (контекст — корень репозитория)"
@echo "check-full - check + test-integration + docker-build (по порядку, до первой ошибки)"
@echo "up - поднять NATS/MinIO/PostgreSQL общим compose-проектом arm-ka"
@echo "emulator - запустить эмулятор ИС Сканирование (python -m src.scan_emulator)"
# Python 3.11 (версия платформы); внутренние пакеты raisa_* вне банка недоступны — пропускаем их
venv:
cd api && uv venv --python 3.11 --allow-existing .venv
cd api && grep -v '^raisa_' requirements.txt | uv pip install --python .venv/bin/python -r -
cd api && grep -v '^-r' requirements-dev.txt | uv pip install --python .venv/bin/python -r -
lint:
cd api && $(BIN)/ruff check .
cd api && $(BIN)/ruff format --check .
cd api && $(BIN)/mypy src
test:
cd api && $(BIN)/pytest -m "not integration"
test-integration:
cd api && $(BIN)/pytest -m integration
check: lint test
# Образ собирается без Nexus (raisa_* в образ не ставятся, см. Dockerfile). Тесты в образе не запускаются:
# tests/ в нём есть, но api/.env.test исключён через .dockerignore, поэтому pytest внутри контейнера не пройдёт.
docker-build:
docker build -t $(IMAGE) .
# Полная проверка перед PR. Шаги вызываются последовательно через $(MAKE), а не как пререквизиты:
# так порядок check -> test-integration -> docker-build и остановка на первой ошибке гарантированы и при make -j.
check-full:
$(MAKE) check
$(MAKE) test-integration
$(MAKE) docker-build
# Общий compose-проект workspace (arm-ka): его используют и другие сервисы, поэтому целей down/stop/restart нет.
# --wait — только со списком долгоживущих сервисов: одноразовый minio-init завершается кодом 0, и compose считает это сбоем
up:
docker compose -f $(COMPOSE_FILE) --project-name $(COMPOSE_PROJECT) up -d --wait postgres nats minio
# Эмулятор ИС Сканирование (параметры — SCAN_HOTFOLDER_PATH, SCAN_FIXTURES_DIR, SCAN_EMULATOR_DELAY из api/.env)
emulator:
cd api && $(BIN)/python -m src.scan_emulator