ci: use running postgres for pgschema desired-state planning#1070
Conversation
The Desktop E2E Integration job flaked with "failed to start embedded PostgreSQL: no version found matching 18.0.0". pgschema apply spins up a throwaway embedded Postgres (Zonky binary from Maven Central) to build its desired-state catalog; the vendored fergusstrange/embedded-postgres returns that literal "no version found" string on ANY non-200 from Maven, so a transient fetch failure surfaces as a bogus version mismatch. Pointing pgschema at the already-running docker buzz-postgres container via PGSCHEMA_PLAN_* takes the external-database branch in CreateDesiredStateProvider, which never reaches the embedded/Maven path. Removes Maven Central from the job's critical path entirely. Co-authored-by: Will Pfleger <pfleger.will@gmail.com> Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Proof obligation — verifiedBoth 1. The five
|
* origin/main: (50 commits) chore(release): release version 0.3.24 (#1074) feat(desktop): refine thread-unread badge to two-token form (#1069) fix(buzz): prevent reconnect storms from reaped ephemeral channels (#1071) fix(buzz-acp): trim oversized observer frames to fit instead of dropping (#1072) perf(ci): speed up PR CI wall clock and local dev builds (#1028) chore(deps): update react monorepo (#1048) Polish desktop visual details (#1067) ci: use running postgres for pgschema desired-state planning (#1070) fix(desktop): anchor active-turn badge to skew-corrected agent start (#1068) feat(desktop): add configurable transport reconnect hook (#1059) Add automatic database migrations (#988) Add composer spoiler formatting (#1055) feat(desktop): in-channel and in-thread unread indicators (#1008) perf(timeline): gate heavy message render behind useDeferredValue (#1022) Add animated profile avatars (#1031) Polish direct message and members modals (#1054) Polish huddles UI (#1041) Fix video review comments in threads (#1056) Polish message reaction tray (#1002) Refine app loading skeletons (#1001) ... Co-authored-by: Will Pfleger <pfleger.will@gmail.com> Signed-off-by: Will Pfleger <pfleger.will@gmail.com> # Conflicts: # desktop/src-tauri/Cargo.lock
…fleger/persona-instantiation * origin/wpfleger/persona-events: (50 commits) chore(release): release version 0.3.24 (#1074) feat(desktop): refine thread-unread badge to two-token form (#1069) fix(buzz): prevent reconnect storms from reaped ephemeral channels (#1071) fix(buzz-acp): trim oversized observer frames to fit instead of dropping (#1072) perf(ci): speed up PR CI wall clock and local dev builds (#1028) chore(deps): update react monorepo (#1048) Polish desktop visual details (#1067) ci: use running postgres for pgschema desired-state planning (#1070) fix(desktop): anchor active-turn badge to skew-corrected agent start (#1068) feat(desktop): add configurable transport reconnect hook (#1059) Add automatic database migrations (#988) Add composer spoiler formatting (#1055) feat(desktop): in-channel and in-thread unread indicators (#1008) perf(timeline): gate heavy message render behind useDeferredValue (#1022) Add animated profile avatars (#1031) Polish direct message and members modals (#1054) Polish huddles UI (#1041) Fix video review comments in threads (#1056) Polish message reaction tray (#1002) Refine app loading skeletons (#1001) ... Co-authored-by: Will Pfleger <pfleger.will@gmail.com> Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
* origin/main: (26 commits) fix(desktop): restore timeline zoom via rem tokens + chat-as-base type scale (#1052) fix(release): format changelog as linked markdown bullets (#1075) chore(release): release version 0.3.24 (#1074) feat(desktop): refine thread-unread badge to two-token form (#1069) fix(buzz): prevent reconnect storms from reaped ephemeral channels (#1071) fix(buzz-acp): trim oversized observer frames to fit instead of dropping (#1072) perf(ci): speed up PR CI wall clock and local dev builds (#1028) chore(deps): update react monorepo (#1048) Polish desktop visual details (#1067) ci: use running postgres for pgschema desired-state planning (#1070) fix(desktop): anchor active-turn badge to skew-corrected agent start (#1068) feat(desktop): add configurable transport reconnect hook (#1059) Add automatic database migrations (#988) Add composer spoiler formatting (#1055) feat(desktop): in-channel and in-thread unread indicators (#1008) perf(timeline): gate heavy message render behind useDeferredValue (#1022) Add animated profile avatars (#1031) Polish direct message and members modals (#1054) Polish huddles UI (#1041) Fix video review comments in threads (#1056) ... Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com> # Conflicts: # desktop/src/features/messages/lib/useRichTextEditor.ts # desktop/src/features/messages/ui/MessageComposer.tsx
Problem
The
Desktop E2E Integrationjob flakes with:This is a misleading error.
./bin/pgschema applyspins up a throwaway embedded Postgres (a Zonky binary downloaded from Maven Central) to build its desired-state catalog for the diff. The vendoredfergusstrange/embedded-postgreslibrary returns the literal stringno version found matching %son any non-200 response from Maven (timeout, 5xx, connection reset) — not just a true 404. The18.0.0artifact exists and resolves with HTTP 200, so this is a transient Maven Central fetch hiccup wearing a version-mismatch costume, uncorrelated with any code change. Blind reruns pass because the jar is genuinely there.Fix
Point pgschema at the already-running docker
buzz-postgres(postgres:18) container as its external plan database viaPGSCHEMA_PLAN_*env vars on the existingApply database schemastep.In File Mode (
--file),applybindsPGSCHEMA_PLAN_*to the--plan-*flags, andCreateDesiredStateProviderreturns the external-database provider before the embedded path that callsStartEmbeddedPostgres. The Zonky/Maven download is never entered, so Maven Central is removed from the job's critical path permanently — this deletes the flaky dependency rather than dampening it.Desired-state is built in a timestamp + crypto-random-suffixed temp schema (
pgschema_tmp_<ts>_<8hex>) that is dropped on exit;publicis never written during the plan phase. Plan and target are the samepostgres:18container, satisfying pgschema's exact-major-version requirement.