release: add Docker release gate and normalize config upgrade - #188
Closed
NikolayS wants to merge 4 commits into
Closed
release: add Docker release gate and normalize config upgrade#188NikolayS wants to merge 4 commits into
NikolayS wants to merge 4 commits into
Conversation
Keep the Docker tag independent from the numeric package major so the same image definition supports PostgreSQL 14 through 19beta2. Relates to #160
Source cron, degraded-mode, and schema snapshots from shared SQL while preserving all 594 workflow assertions. Include attnum in schema snapshots so column-order divergence is visible. Relates to #160
Run every gate surface across bounded parallel PostgreSQL workers, reuse exact CI step bodies, emit validated TSV and human summaries, and guarantee ID-scoped container and volume teardown. Relates to #160
Rebuild the v1.5 upgrade table in canonical fresh-install order while preserving the singleton row, defaults, constraints, indexes, ownership, ACLs, and comments. Reject unsupported custom dependencies and catalog properties transactionally instead of dropping them. Add an upgrade regression that seeds non-default values and custom catalog objects, verifies preservation, and proves migration reapplication keeps the replacement table OID.
Owner
Author
|
Superseded by and fully absorbed into #192, now merged as |
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.
Summary
attnumorder;ash-1.5-to-2.0.sqlmigration:ash.confighad fresh-vs-upgraded column ordinals that diverged beginning with v1.1;main, including chore(deps): bump actions/checkout from 7.0.0 to 7.0.1 #159, ci: harden and speed up test workflow #145, test: inspect wait IDs at pair positions #154, fix: reject NULL elements in decode_sample (#143) #151, docs: remove legacy reader screenshots #149, fix: defer hourly rollup until minute coverage #133, and fix: keep report totals consistent #127.Relates to #160.
ash.configred/greenThe new ordinal-aware upgrade assertion was red before the migration fix on PostgreSQL 14 (and the same divergence affected every supported major):
No allowlist was added. The final migration takes an
ACCESS EXCLUSIVElock, validates the exact expected columns/types/nullability and supported catalog properties, snapshots the singleton row plus defaults, constraints, indexes, owner, effective table/column ACLs, and comments, then performs an atomic rename/create/copy/DROP RESTRICT/replay. Unsupported dependencies or properties abort and roll back. A canonical table is a no-op on reapplication and retains its OID.The regression seeds non-default data, custom defaults/ACL state, a check constraint, a partial index, and a standalone-UNIQUE/self-FK pair. It verifies preservation and applies the migration twice.
Release-gate matrix
Command used on rebased HEAD:
PG_MAJORS="14 15 16 17 18 19beta2" \ RELEASE_GATE_JOBS=2 \ RELEASE_GATE_PULL=0 \ RELEASE_GATE_OUTPUT_DIR=/tmp/pg_ash-release-gate-postrebase-final3-20260727 \ devel/scripts/release_gate.sh allResult: 36/36 PASS. The cron surface confirmed actual pg_cron job firing on every major, including
postgres:19beta2(there is nopostgres:19image yet).Additional validation
actionlint1.7.7: PASSshellcheck0.10.0: PASShadolint2.12.0: PASSbash -n devel/scripts/release_gate.sh: PASSgit diff --check: PASSfinance-control-*containers remained running and untouched: 5This PR is intentionally left as a draft.