Skip to content

Switch image matrices to PostgreSQL 17/18 and adopt tools v0.8.39 - #386

Open
ibrahim halatci (ihalatci) wants to merge 1 commit into
masterfrom
ihalatci-pg19-docker-matrices
Open

Switch image matrices to PostgreSQL 17/18 and adopt tools v0.8.39#386
ibrahim halatci (ihalatci) wants to merge 1 commit into
masterfrom
ihalatci-pg19-docker-matrices

Conversation

@ihalatci

Copy link
Copy Markdown
Contributor

What

Activates the PostgreSQL 18 image, retires PostgreSQL 16, and moves every workflow onto tools v0.8.39.

This is phase 2 of 3 for PG19 support. Phase 1 (#383) added the image content; this phase wires it into the build matrices. Phase 3 is blocked externally (see below).

Change Files
Matrices postgres_16postgres_18 publish_docker_images_{cron,on_push,on_tag}.yml
tools pin → v0.8.39 all 5 publish/update workflows
Drop postgres_16_version pkgvars
Delete PG16 image postgres-16/Dockerfile
Citus 14.1.014.2.0 postgres-18/Dockerfile

8 files, +10/−53.

Why the pin bump and the matrix change are one commit

v0.8.39 removes postgres_14, postgres_15 and postgres_16 from DockerImageType. Re-pinning while - postgres_16 is still in a matrix would hard-fail on an invalid enum value, and swapping the matrix without the pin would fail on an unknown postgres_18. They have to land together.

update_version.yml was still on v0.8.36; the other four were on v0.8.38.

Why postgres-18/Dockerfile also changes

pkgvars has carried postgres_18_version since February but the pg18 tag has never actually been published, so the file went stale — it was pinned to Citus 14.1.0 while master moved to 14.2.0. Publishing it as-is would ship pg18 with an older Citus than latest and pg17. All three corrected pins are verified published for PG18:

  • postgresql-18-citus-14.2=14.2.0.citus-1
  • postgresql-18-hll=2.21.citus-1
  • postgresql-18-topn=2.7.1.citus-1

Why PostgreSQL 16 goes

Citus no longer supports it. It is also the cause of the currently failing nightly package builds, which die on citus/packaging:almalinux-8-pg16.

Why postgres_19 is not here

PostgreSQL 19 is still 19beta3 — there is no GA tag on Docker Hub — and no postgresql-19-citus package exists at any version. The image cannot build yet. postgres-19/Dockerfile stays in the tree unreferenced, and update_version.yml will refresh it on the next version bump now that the pin understands postgres19.

Phase 3 will add - postgres_19 to the matrices, flip the root and alpine Dockerfiles to PG19 GA, and re-pin off 19beta3.

Effect on merge

master is the only branch that publishes (publish_docker.py gates on it), so CI here is build-only. Once merged:

  • pg18 is published for the first time
  • pg16 stops being refreshed
  • latest, alpine, pg17, nightly are unaffected

Note on publish_docker_images_on_manual.yml

That workflow passes no --image_type, so it builds every regular image. It is already broken on master: under v0.8.38 it tries to build postgres-14/ and postgres-15/, which don't exist in this repo. This PR improves it — every image it now resolves has a matching directory — though its main trigger will still fail on postgres_19 until Citus publishes PG19 packages. It's workflow_dispatch-only.

Activates the PostgreSQL 18 image, retires PostgreSQL 16, and moves every
workflow onto the tools tag that matches.

Matrices (cron, on_push, on_tag) change postgres_16 -> postgres_18. The
pg18 tag has never been published even though pkgvars has carried
postgres_18_version since February; this closes that gap. PostgreSQL 16 is
dropped because Citus no longer supports it, which is also why the nightly
package builds have been failing on almalinux-8-pg16.

The tools pin moves to v0.8.39 in all five workflows (four were on v0.8.38,
update_version.yml was still on v0.8.36). This is not optional: v0.8.39
removes postgres_14, postgres_15 and postgres_16 from DockerImageType, so
the pin bump and the matrix change have to land together or the
postgres_16 job fails on an invalid enum value.

postgres-18/Dockerfile moves from Citus 14.1.0 to 14.2.0 so the newly
published pg18 tag matches latest and pg17 rather than shipping an older
Citus. All three pinned packages are published for PostgreSQL 18:
postgresql-18-citus-14.2=14.2.0.citus-1, postgresql-18-hll=2.21.citus-1
and postgresql-18-topn=2.7.1.citus-1.

postgres_19 is deliberately not added to the matrices. PostgreSQL 19 is
still 19beta3 and no postgresql-19-citus package exists, so the image
cannot build yet. postgres-19/Dockerfile stays in the tree, unreferenced,
and update_version.yml will refresh it on the next version bump now that
the pin supports postgres19.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 1ed7b58a-0ba9-4f47-a1de-3ee665bae7f2
@ihalatci

Copy link
Copy Markdown
Contributor Author

Follow-up phase 3 (PG19 GA) is tracked in #387 — blocked on PostgreSQL 19 going GA and Citus publishing PG19 packages.

Worth flagging one ordering constraint captured there: update_docker.py generates latest/alpine from postgres_19_version, which is still 19beta3 in pkgvars. That bump must land before update_version.yml is dispatched for the Citus 15 release, otherwise citus:latest gets pinned to a PG19 beta. Nothing in this PR triggers that — update_version.yml is workflow_dispatch only and the publish workflows just build the Dockerfiles as they already exist.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants