fix(deploy): tradein_fdw_reader password — psql var interpolation in DO block #510

Merged
lekss361 merged 2 commits from fix/tradein-fdw-psql-var-in-do into main 2026-05-24 11:29:00 +00:00
Showing only changes of commit 08a8cf51b3 - Show all commits

View file

@ -17,8 +17,21 @@
-- Reference incident: deploy 2026-05-24 (post-merge PR #503) упал на
-- "syntax error at or near ':'" в LINE 4 этого файла — :'pw' дошёл до сервера
-- as literal вместо интерполяции.
--
-- ⚠️ `set_config(name, value, is_local) -> text` ВОЗВРАЩАЕТ установленное
-- значение. Без `\o /dev/null` бы psql напечатал password на stdout → leak в
-- Forgejo Actions deploy logs (retained, visible всем с repo read access).
-- Поэтому оборачиваем оба set_config вызова в `\o /dev/null` / `\o` brackets
-- — output mutes только для этих строк, NOTICE-сообщения из DO block
-- (idempotency signal) остаются видимыми.
--
-- Rollback path: НЕ revert этого файла (вернёт сломанный `:'pw'` внутри $$).
-- Корректный rollback — unset GENDESIGN_FDW_PASSWORD в /opt/gendesign/backend
-- /.env.runtime на VPS, deploy.yml тогда пропустит этот шаг полностью.
\o /dev/null
SELECT set_config('app.fdw_pw', :'pw', false);
\o
DO $$
BEGIN
@ -31,5 +44,8 @@ BEGIN
END $$;
-- Clear GUC after use (defense-in-depth — не оставляем password в session state
-- даже на short connection).
-- даже на short connection). Same \o trick — set_config return value is empty
-- string here, но всё равно лишний row в stdout не нужен.
\o /dev/null
SELECT set_config('app.fdw_pw', '', false);
\o