Files
ripe-cidr-collector/docs/summary-pin-dependencies.md
T
ayurishchevandClaude Sonnet 5 c99665542a Pin dependency versions and add constraints.txt
Exact versions for direct dependencies, full pip freeze of the tested
image as constraints, both Dockerfiles install with -c constraints.txt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 07:47:02 +03:00

21 lines
2.3 KiB
Markdown
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.
# Итоги: закрепление версий зависимостей (п. 1.2)
План: `docs/plan-pin-dependencies.md`.
## Сделано
- `requirements.txt` и `requirements-dev.txt`: прямые зависимости с точными версиями. Прод: `requests==2.34.2`, `fastapi==0.141.1`, `uvicorn==0.53.0`, `APScheduler==3.11.3`. Разработка: `pytest==9.1.1`, `httpx==0.28.1`.
- `constraints.txt` (новый, 26 пакетов): полный `pip freeze` образа, на котором проходили тесты, включая транзитивные пакеты (`starlette`, `pydantic`, `urllib3` и др.).
- `Dockerfile` и `Dockerfile.test` ставят пакеты с `-c constraints.txt`.
- README: ручная установка с `-c constraints.txt`, список копируемых файлов приведён в соответствие с кодом (был неполным), раздел «Dependency versions» с порядком обновления, замечание об образе исправлено.
## Проверка
- Оба образа собраны без кэша, 18 тестов проходят.
- Прод-образ: пакеты полностью совпадают с `constraints.txt`, `pytest` и `httpx` в нём нет; `api_server`, `collector_daemon`, `db`, `healthcheck` импортируются.
- Версии взяты из того, что уже стояло и проходило тесты, поведение не менялось.
## Замечания
- Базовый образ `python:3.11-slim` не закреплён по дайджесту: патчи Python приходят при пересборке (осознанный компромисс).
- Закрепление даёт воспроизводимость, но не обновляет уязвимые версии само: проверку обновлений нужно делать вручную (порядок в README).
- Не проверялась сборка на другой архитектуре: часть пакетов (`pydantic_core`) содержит бинарные сборки под платформу.
- `docker compose up` не запускался повторно: образ собран тем же Dockerfile, стенд не менялся.