Files
ripe-cidr-collector/docs/plan-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

2.5 KiB
Raw Blame History

План: закрепление версий зависимостей (п. 1.2 рекомендаций)

Цель

Сборка образа и запуск тестов воспроизводимы: завтрашняя сборка использует те же версии библиотек, что и сегодняшняя (риск 2 анализа). Обновление библиотек становится осознанным действием.

Дизайн

  • Версии берутся из образа, на котором сейчас проходят 18 тестов (pip freeze в контейнере, Python 3.11), поэтому поведение не меняется.
  • requirements.txt и requirements-dev.txt: только прямые зависимости с точной версией (==), файлы остаются читаемыми.
    • прод: requests, fastapi, uvicorn, APScheduler;
    • разработка: pytest, httpx.
  • constraints.txt (новый): полный список всех установленных пакетов, включая транзитивные (starlette, pydantic, urllib3 и др.). Оба Dockerfile ставят пакеты с -c constraints.txt, поэтому закреплены и косвенные зависимости.
  • Базовый образ python:3.11-slim не закрепляется по дайджесту (патчи безопасности Python приходят автоматически); это осознанный компромисс, указан в README.
  • Порядок обновления (в README): поднять версии в контейнере, прогнать тесты, обновить constraints.txt из pip freeze, коммит.

Изменения

  1. requirements.txt, requirements-dev.txt: точные версии.
  2. constraints.txt: новый файл.
  3. Dockerfile, Dockerfile.test: копирование constraints.txt, установка с -c.
  4. README.md: ручная установка с -c constraints.txt, порядок обновления версий.
  5. Тестов не добавляется (код не меняется).

Проверка

  • Сборка обоих образов, 18 тестов проходят.
  • В прод-образе pip freeze совпадает с закреплёнными версиями (нет лишних пакетов вроде pytest).
  • Импорт api_server и collector_daemon в прод-образе.