chore(ci): деплой на изменение ролей, ruff-гейт для МЕРЫ, удаление мёртвого workflow #2751
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
ИРД
вторичка
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#2751
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "chore/ci-config-cleanup-v2"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Пересобранная версия PR #2748 — тот заблокирован конфликтом (за сегодня в main переписали ту же секцию), и одна из трёх его правок за это время стала вредной. Старый PR закрываю в пользу этого.
1. Изменение прав вступало в силу в случайный момент (Птица)
auth/**добавлен вon.push.pathsуdeploy.yml. Роли лежат вauth/roles.yaml, монтируются read-only в контейнер и читаются под кэшем на всё время жизни процесса — сбросить можно только рестартом. Без триггера правка прав применялась тогда, когда чей-то посторонний мерж случайно пересоздавал контейнер.Путь добавлен только в верхнеуровневый триггер, не в
changes-фильтрinfra: деплой в конце безусловно пересоздаёт контейнеры, значит самого запуска достаточно, а добавление вinfraвызвало бы бесполезную пересборку идентичных образов.Исправлена неточность прошлой версии: в комментарии было «монтируется в backend+worker». По факту — только в
backend(docker-compose.prod.yml:139);workerмонтирует лишь./dataи./reports(строки 190-192).2. Линтер не запускался в CI (МЕРА)
Добавлен блокирующий шаг
ruff checkпосле установки зависимостей. Проверено, что за сегодня он в main сам не появился — дублирования нет.Три срабатывания
RUF059вtest_estimator_pure_units.py:381вычищены переходом на_для неиспользуемых значений распаковки — та же конвенция уже применена в трёх соседних тестах того же файла.Причина, по которой это не ловилось раньше: хуки pre-commit пиннят ruff 0.7.4, а зафиксированные зависимости — 0.15.20. Локальная проверка физически не видела этих правил.
3. Мёртвый конфиг удалён — но без «заготовки»
.github/workflows/ci.ymlудалён (Forgejo его не исполняет, зеркало на GitHub отстало на 522 коммита),README.mdпоправлен: mypy был приписан гейту CI, где его нет.Ключевое отличие от прошлой версии: закомментированный блок
services: postgresне переносится никуда. В прошлой версии он сохранялся как заготовка на будущее с обоснованием «тестов против живой БД в проекте нет». За сегодня оба утверждения устарели: такие тесты появились, и там сознательно не стали использоватьservices:— обоснование записано вci-tradein.yml:91-100: раннер запускает задания и сервис-контейнеры в сети хоста, а на порту 5432 этого хоста слушает продовая база. То есть тот, кто раскомментировал бы заготовку, направил бы тесты в прод.Проверка
actionlint:deploy.ymlчисто; вci-tradein.ymlодно информационное замечание (SC2012,lsвместоfind, строка 117) — сверено с немодифицированной версией тем же инструментом, замечание предсуществующее, не из этой правки.pathsсравнены построчно: только добавления, ни один прежний путь не исчез.ci-tradein.ymlфильтры вообще не трогает — там только новый шаг.Побочное наблюдение (вне объёма)
.forgejo/workflows/ci.ymlсодержит две комментарные ссылки на удаляемый.github/workflows/ci.yml(строки 5 и 16). Это устаревание оставлено чужим PR #2745 и в объём этой правки не входит — фиксирую, чтобы не потерялось.deploy-tradein.ymlне тронут.- deploy.yml: добавлен auth/** в path-триггеры. app.core.auth кэширует roles.yaml на весь lifetime процесса (@lru_cache), а файл монтируется ТОЛЬКО в backend (не в worker, у него лишь ./data и ./reports) — без триггера правка ролей вступала бы в силу в случайный момент. - ci-tradein.yml: добавлен блокирующий шаг `ruff check` — гейт для tradein backend его не гонял вообще. Заодно почищены 3 срабатывания RUF059 (unused unpacked vars) в test_estimator_pure_units.py:381 по established convention (`_` уже используется в соседнем тесте того же файла). - Удалён мёртвый .github/workflows/ci.yml (Forgejo его не исполняет; GitHub mirror отстал на 500+ коммитов). Закомментированный postgres-services блок НЕ перенесён — обоснование, ради которого его хотели оставить как заготовку ("тестов против живой БД нет"), уже неверно: tests/sql/ реально гоняются против Postgres в ci.yml (#2745), и там намеренно НЕ используется `services:` — раннер поднимает job и service-контейнеры в сети хоста, где порт 5432 занят прод-базой (см. ci.yml:91-100). - README.md: убрана ложная привязка mypy к живому CI-гейту (только ruff + pytest + coverage gate ≥65%); убран stale-блок про .github/workflows/ — каталог после удаления ci.yml пуст.