citusdata / citusdata/packaging

PostgreSQL 19 support in packaging images

Open
#1,209 0 comments 0 reactions 1 assignee Claimed by @serhatandic View on GitHub
Dominant language
Dockerfile
Stars
19
Forks
11
Avg merge
1d 15h
Merged PRs (30d)
17

Description

Tracking issue for PostgreSQL 19 support in the packaging build images.

## Current state

Initial support is being added in https://github.com/citusdata/packaging/pull/1203:

- **deb** (`templates/Dockerfile-deb.tmpl` + generated `dockerfiles/*-all/Dockerfile`): the extra `19` component is appended to the PGDG apt source line (`deb http://apt.postgresql.org/pub/repos/apt/ -pgdg main 19`), build deps switched to `postgresql-server-dev-19`, and `DEB_PG_SUPPORTED_VERSIONS` extended to `14 15 16 17 18 19`.
- **rpm** (`templates/Dockerfile-rpm.tmpl` + `dockerfiles/almalinux-9-pg19/`): the `pgdg19-updates-testing` repo is enabled via `sed` on `pgdg-redhat-all.repo`, because the GA repo (`pub/repos/yum/19/redhat/...`) does not exist yet.
- **version lists**: `19` added to `update_dockerfiles`, `update_image`, and `ci/push_images`.
- **CI matrices**: PG19 is added as a one-off `include` entry (`almalinux,9` only) in `build-package.yml`, `build-package-test.yml`, and `image-health-check.yml`, rather than in the main `POSTGRES_VERSION` cross-product list.

Nothing pins a specific beta (`beta1`/`beta2`/`beta3`); packages are installed unpinned, so a rebuild always picks up the newest 19 build PGDG publishes.

## Known limitations while PG19 is pre-GA

- **No EL8 packages.** PGDG publishes no PostgreSQL 19 RPMs for EL8 — `testing/19/redhat/rhel-8-x86_64/` is empty while `rhel-9-x86_64/` is populated. `update_dockerfiles`, `update_image`, and `ci/push_images` therefore guard against `release=8` + `pgversion=19`, and this is also why PG19 is an `include` entry in the CI matrices instead of being in the main list (the cross-product would otherwise pull in `almalinux,8` and `oraclelinux,8`).
- **Beta packages come from the testing channel.** The RPM images depend on `pgdg19-updates-testing`; the deb images depend on the version-specific `19` component of the pgdg archive. Both are pre-GA mechanisms.

## TODOs after PostgreSQL 19 GA

- [ ] **rpm — drop the testing repo enable.** Remove the `sed -i '/\[pgdg19-updates-testing\]/...'` line from `templates/Dockerfile-rpm.tmpl` and the `pg19_sed_cmd` conditional from `update_dockerfiles`, then regenerate with `./update_dockerfiles`. Verify `https://download.postgresql.org/pub/repos/yum/19/redhat/rhel-9-x86_64/` exists first (it currently 404s).
- [ ] **deb — drop the extra `19` component.** Revert the pgdg source line in `templates/Dockerfile-deb.tmpl` back to `... -pgdg main` once PG19 packages land in the default `main` component, then regenerate.
- [ ] **Re-check EL8 availability.** If PGDG ships PG19 for EL8 at GA, remove the `release=8` guards in `update_dockerfiles`, `update_image`, and `ci/push_images`, and generate the `almalinux-8-pg19` / `oraclelinux-8-pg19` images. If EL8 remains unsupported (likely, given EL8 is near EOL), keep the guards and leave a short comment recording that it is permanent.
- [ ] **Fold PG19 into the main CI matrices.** Once the EL8 question is settled, move `19` from the `include` block into the `POSTGRES_VERSION` list in `build-package.yml`, `build-package-test.yml`, and `image-health-check.yml` (or keep the `include` if EL8 stays excluded).
- [ ] **Rebuild and push images** so the published `citus/packaging` tags carry GA PostgreSQL 19 rather than a beta build.
- [ ] **Extend PG19 to the remaining RPM platforms** if PGDG coverage grows beyond EL9 (e.g. EL10) by the time of GA.
- [ ] **Update the release-side PostgreSQL version matrix** (`postgres-matrix.yml` on the `all-citus` branch) once Citus itself declares PG19 support, so packages are actually built against PG19.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.