Repository navigation
ci: isolate DEV migrations with owner credentials - #784
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что изменено
DEV migrations выполняются отдельным подключением
procollab_api; web/Celery сохраняютprocollab_api_dev. Одноразовая подготовка DEV использует эти два существующих login, без обязательного отдельного администратора.Одноразовая подготовка DEV выполнена и независимо read-only подтверждена. Все отдельные обязательные suites на head f737deb прошли; DEV activation разрешена пользователем.
Причина
Deploy Dev остановился на
partner_programs.0021_evaluation_criteria_lock: runtime login не владеет таблицей.Согласованная роль миграций обоих контуров —
procollab_api. PROD уже использует её; его workflow, application login, пароль, объекты и grants не меняются. Read-only preflight подтвердил общий PostgreSQL 14.24 cluster:procollab_db_test— фактическая deployed PROD БД, установленная по server checkout/image. Существующее совмещение runtime/migration login в PROD сохраняется.Реализация и scope
7596455f986302a3f26a93bc6b37b4087b065bfa; head:f737debaf2fc9d0656369f803c6506b6879c98d8.dev, policy только dev; migration secrets присутствуют, их значения не читались.ssh2@1.16.0, ED25519 host fingerprint, fixed remote argv. Credentials не записываются в .env или web/Celery config.migrate --checkдо recreate.Одноразовая DEV подготовка
Runbook, helper, SQL.
На PostgreSQL 14 session_user может выдавать/отзывать членство в собственной роли: официальное правило, проверка на disposable 14.24. Прежнее утверждение об обязательном администраторе исправлено.
Helper берёт runtime credentials из DEV container, спрашивает только скрытый пароль
procollab_api, проверяет оба login/БД/major version. При необходимостиprocollab_api_devвременно выдаёт членство в себеprocollab_api; затем migrator передаёт ровно university table/owned sequence себе, сохраняя runtime access. В finally временное членство отзывается; исходное существующее членство сохраняется. Advisory lock исключает конкуренцию helper.Направление: DEV role → migrator. DEV runtime не получает PROD owner-role. Членство cluster-wide: общая
procollab_apiвременно получает права DEV role; PROD objects/grants не изменяются. Никаких REASSIGN OWNED, owner changes БД/схем, новых login или password rotation.SQL error откатывает незавершённую транзакцию до cleanup; SIGINT/TERM/HUP вызывают finally. SIGKILL/потеря БД могут помешать отзыву — helper сообщает recovery command, runbook требует проверки. Процедура self-role grant ограничена PostgreSQL 14; на других major отказ до grant.
Проверки
Acceptance
M1–M3: DEV-only и credential isolation; M4–M7: ownership, default/runtime grants, mixed-owner refusal и runtime migrate-check; M8: serialized DEV deploy; M9–M10: общая существующая роль и сохранённые application logins подтверждены source/config/disposable tests/live metadata соответственно.
SSH preparation и независимая read-only verification завершены. После зелёного CI — DEV activation и проверка migration connection, migrate-check, web/Celery. Disposable tests не заменяют live activation.
DEV activation completed — 18.10.2026
5bc06ed99db69be20c5282754a03eb8f3f7928db, imageprocollab-dev-api:5bc06ed99db69be20c5282754a03eb8f3f7928db-096712031353.procollab_api: actual preflight PASS, pending=0, migrate + обычный runtime migrate-check PASS. Новых unapplied migrations в этом rollout не было; искусственный live DDL не создавался.