statements-version: сверка checkout библиотеки с requirements.txt в make venv/install; тег — из requirements (AURORA-1677)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
14d2904b48
commit
97896a4ec3
29
Makefile
29
Makefile
@ -2,22 +2,35 @@
|
|||||||
VENV := api/.venv
|
VENV := api/.venv
|
||||||
BIN := $(CURDIR)/$(VENV)/bin
|
BIN := $(CURDIR)/$(VENV)/bin
|
||||||
STATEMENTS_DIR ?= ../pylib_ai_arm_statements
|
STATEMENTS_DIR ?= ../pylib_ai_arm_statements
|
||||||
STATEMENTS_TAG ?= v0.1.1
|
# Тег выпуска библиотеки — по версии, закреплённой в api/requirements.txt
|
||||||
|
STATEMENTS_TAG ?= v$(shell sed -n 's/^pylib_ai_arm_statements==//p' api/requirements.txt)
|
||||||
COMPOSE_FILE ?= ../docs/dev/docker-compose.yml
|
COMPOSE_FILE ?= ../docs/dev/docker-compose.yml
|
||||||
# DBML относительно api/: и в основном workspace, и в worktree .wt/<срез>/ это соседний docs/
|
# DBML относительно api/: и в основном workspace, и в worktree .wt/<срез>/ это соседний docs/
|
||||||
DBML ?= ../../docs/model/data-model-v5.23.dbml
|
DBML ?= ../../docs/model/data-model-v5.23.dbml
|
||||||
|
|
||||||
.PHONY: venv install lint test test-integration e2e dbml-check migration-cycle check check-infra docker-build web-check statements-check check-full up migrate seed seed-dev
|
.PHONY: venv install statements-version lint test test-integration e2e dbml-check migration-cycle check check-infra docker-build web-check check-full up migrate seed seed-dev
|
||||||
|
|
||||||
|
# Сверка checkout библиотеки с версией из api/requirements.txt (pylib_ai_arm_statements==<версия>): VERSION checkout
|
||||||
|
# не равен закреплённой — ошибка; checkout не на теге v<версия> — предупреждение (правка библиотеки до выпуска).
|
||||||
|
# docker-build требует тег строго.
|
||||||
|
statements-version:
|
||||||
|
@ver=$$(cat "$(STATEMENTS_DIR)/VERSION" 2>/dev/null) || \
|
||||||
|
{ echo "Ошибка: нет $(STATEMENTS_DIR)/VERSION — клонируйте RSHB/pylib_ai_arm_statements рядом или задайте STATEMENTS_DIR" >&2; exit 1; }; \
|
||||||
|
[ "v$$ver" = "$(STATEMENTS_TAG)" ] || \
|
||||||
|
{ echo "Ошибка: в $(STATEMENTS_DIR) версия $$ver, в api/requirements.txt — $(STATEMENTS_TAG:v%=%)" >&2; exit 1; }; \
|
||||||
|
release=$$(git -C "$(STATEMENTS_DIR)" rev-parse -q --verify "refs/tags/$(STATEMENTS_TAG)^{commit}"); \
|
||||||
|
[ -n "$$release" ] && [ "$$release" = "$$(git -C "$(STATEMENTS_DIR)" rev-parse HEAD)" ] || \
|
||||||
|
echo "Предупреждение: $(STATEMENTS_DIR) не на теге $(STATEMENTS_TAG) — ставится рабочее дерево библиотеки"
|
||||||
|
|
||||||
# Python 3.11 (версия платформы); пропускаем внутренние raisa_* и устанавливаемые локально pylib_ai*
|
# Python 3.11 (версия платформы); пропускаем внутренние raisa_* и устанавливаемые локально pylib_ai*
|
||||||
venv:
|
venv: statements-version
|
||||||
cd api && uv venv --python 3.11 --allow-existing .venv
|
cd api && uv venv --python 3.11 --allow-existing .venv
|
||||||
cd api && grep -Ev '^(raisa_|pylib_ai)' requirements.txt | uv pip install --python .venv/bin/python -r -
|
cd api && grep -Ev '^(raisa_|pylib_ai)' 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 -
|
cd api && grep -v '^-r' requirements-dev.txt | uv pip install --python .venv/bin/python -r -
|
||||||
uv pip install --python "$(BIN)/python" --reinstall-package pylib-ai-arm-statements "$(STATEMENTS_DIR)"
|
uv pip install --python "$(BIN)/python" --reinstall-package pylib-ai-arm-statements "$(STATEMENTS_DIR)"
|
||||||
|
|
||||||
# Установить или переустановить Python-пакет из соседнего репозитория в окружение backend.
|
# Установить или переустановить Python-пакет из соседнего репозитория в окружение backend.
|
||||||
install:
|
install: statements-version
|
||||||
uv venv --python 3.11 --allow-existing "$(VENV)"
|
uv venv --python 3.11 --allow-existing "$(VENV)"
|
||||||
uv pip install --python "$(BIN)/python" --reinstall-package pylib-ai-arm-statements "$(STATEMENTS_DIR)"
|
uv pip install --python "$(BIN)/python" --reinstall-package pylib-ai-arm-statements "$(STATEMENTS_DIR)"
|
||||||
|
|
||||||
@ -69,14 +82,6 @@ web-check:
|
|||||||
cd web && npx tsc --noEmit
|
cd web && npx tsc --noEmit
|
||||||
cd web && npm run build
|
cd web && npm run build
|
||||||
|
|
||||||
# Историческая проверка копии api/arm_statements/ отключена: теперь это устанавливаемая библиотека.
|
|
||||||
# Обновление библиотеки из ../pylib_ai_arm_statements — make install.
|
|
||||||
ARM_KA_DOCS ?= ../docs
|
|
||||||
# statements-check:
|
|
||||||
# @rc=0; $(ARM_KA_DOCS)/scripts/sync-statements.sh --check --host-dir . || rc=$$?; \
|
|
||||||
# if [ $$rc -eq 10 ]; then echo "statements-check: ПРЕДУПРЕЖДЕНИЕ — впишите в описание PR"; \
|
|
||||||
# elif [ $$rc -ne 0 ]; then exit $$rc; fi
|
|
||||||
|
|
||||||
# Полная проверка перед PR. Порядок: быстрые без БД (check, dbml-check), затем БД/NATS из compose (test-integration),
|
# Полная проверка перед PR. Порядок: быстрые без БД (check, dbml-check), затем БД/NATS из compose (test-integration),
|
||||||
# затем docker, затем web. Цикл миграций upgrade -> downgrade -> upgrade на чистой БД входит в test-integration
|
# затем docker, затем web. Цикл миграций upgrade -> downgrade -> upgrade на чистой БД входит в test-integration
|
||||||
# (tests/test_migrations.py), поэтому отдельным шагом не гоняется: второй запуск только удлинил бы прогон. e2e — после
|
# (tests/test_migrations.py), поэтому отдельным шагом не гоняется: второй запуск только удлинил бы прогон. e2e — после
|
||||||
|
|||||||
@ -637,7 +637,9 @@ S3 (storage); без S3 — предупреждение в логе, цикл
|
|||||||
зависимости `raisa_*` и `pylib_ai*` из `requirements.txt`, устанавливает dev-зависимости и локальную библиотеку
|
зависимости `raisa_*` и `pylib_ai*` из `requirements.txt`, устанавливает dev-зависимости и локальную библиотеку
|
||||||
из `../pylib_ai_arm_statements`. После изменения библиотеки выполните `make install` для её переустановки
|
из `../pylib_ai_arm_statements`. После изменения библиотеки выполните `make install` для её переустановки
|
||||||
без повторной установки всех зависимостей. Другой путь задаётся через `STATEMENTS_DIR`:
|
без повторной установки всех зависимостей. Другой путь задаётся через `STATEMENTS_DIR`:
|
||||||
`make venv STATEMENTS_DIR=/путь/к/репозиторию` или `make install STATEMENTS_DIR=/путь/к/репозиторию`. Исходники и YAML-правила меняются в репозитории библиотеки;
|
`make venv STATEMENTS_DIR=/путь/к/репозиторию` или `make install STATEMENTS_DIR=/путь/к/репозиторию`. Перед установкой обе цели сверяют checkout (`make statements-version`): его `VERSION` должен совпадать с версией
|
||||||
|
в `api/requirements.txt` (иначе ошибка), checkout не на теге `v<версия>` — предупреждение. `make docker-build` требует тег.
|
||||||
|
Исходники и YAML-правила меняются в репозитории библиотеки;
|
||||||
копирование в `api/arm_statements/` и `sync-statements` больше не используются. `service.statements_version` —
|
копирование в `api/arm_statements/` и `sync-statements` больше не используются. `service.statements_version` —
|
||||||
маркер `VERSION` библиотеки, если он есть, иначе версия установленного дистрибутива.
|
маркер `VERSION` библиотеки, если он есть, иначе версия установленного дистрибутива.
|
||||||
|
|
||||||
|
|||||||
@ -70,4 +70,4 @@ uvicorn==0.46.0
|
|||||||
uvloop==0.22.1
|
uvloop==0.22.1
|
||||||
watchfiles==1.2.0
|
watchfiles==1.2.0
|
||||||
websockets==16.1.1
|
websockets==16.1.1
|
||||||
yarl==1.24.5
|
yarl==1.24.5
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user