From 5ae969b4ff6e8d4d96ad70f5cf850eb1dcd02e39 Mon Sep 17 00:00:00 2001 From: Ibrahim Halatci Date: Fri, 21 Aug 2026 16:32:06 +0300 Subject: [PATCH] Add PostgreSQL 19 image and pkgvars entry Additive-only groundwork for PostgreSQL 19 support: - pkgvars: add postgres_19_version=19beta3. This is the entry that citusdata/tools' test_pkgvar_postgres_version_existence asserts against this repository, so it unblocks citusdata/tools#423. - Add postgres-18/Dockerfile and postgres-19/Dockerfile. - postgres-17/Dockerfile: bump hll to 2.21.citus-1 and topn to 2.7.1.citus-1, both now published for PostgreSQL 14-19. Nothing here changes what gets published. The new directories are inert because the publish workflow matrices do not reference postgres_18 or postgres_19 yet, and postgres_16 keeps both its matrix entry and its pkgvars line. The publish matrices, the tools pin bump, removal of postgres-16 and retargeting latest/alpine onto PostgreSQL 19 are deliberately held back: the first three depend on a new tools tag, and the last must wait for the PostgreSQL 19 GA release so that the latest tag is never built on a beta. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1ed7b58a-0ba9-4f47-a1de-3ee665bae7f2 --- pkgvars | 1 + postgres-17/Dockerfile | 4 ++-- postgres-18/Dockerfile | 42 ++++++++++++++++++++++++++++++++++++++++++ postgres-19/Dockerfile | 42 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 postgres-18/Dockerfile create mode 100644 postgres-19/Dockerfile diff --git a/pkgvars b/pkgvars index 29b9f55..79f6fc4 100644 --- a/pkgvars +++ b/pkgvars @@ -1,3 +1,4 @@ +postgres_19_version=19beta3 postgres_18_version=18.4 postgres_17_version=17.6 postgres_16_version=16.10 diff --git a/postgres-17/Dockerfile b/postgres-17/Dockerfile index eeadd04..165898e 100644 --- a/postgres-17/Dockerfile +++ b/postgres-17/Dockerfile @@ -20,8 +20,8 @@ RUN apt-get update \ curl \ && curl -s https://install.citusdata.com/community/deb.sh | bash \ && apt-get install -y postgresql-$PG_MAJOR-citus-14.1=$CITUS_VERSION \ - postgresql-$PG_MAJOR-hll=2.19.citus-1 \ - postgresql-$PG_MAJOR-topn=2.7.0.citus-1 \ + postgresql-$PG_MAJOR-hll=2.21.citus-1 \ + postgresql-$PG_MAJOR-topn=2.7.1.citus-1 \ && apt-get purge -y --auto-remove curl \ && rm -rf /var/lib/apt/lists/* diff --git a/postgres-18/Dockerfile b/postgres-18/Dockerfile new file mode 100644 index 0000000..adceaca --- /dev/null +++ b/postgres-18/Dockerfile @@ -0,0 +1,42 @@ +# This file is auto generated from it's template, +# see citusdata/tools/packaging_automation/templates/docker/postgres-18/postgres-18.tmpl.dockerfile. +FROM postgres:18.4 +ARG VERSION=14.1.0 +LABEL maintainer="Citus Data https://citusdata.com" \ + org.label-schema.name="Citus" \ + org.label-schema.description="Scalable PostgreSQL for multi-tenant and real-time workloads" \ + org.label-schema.url="https://www.citusdata.com" \ + org.label-schema.vcs-url="https://github.com/citusdata/citus" \ + org.label-schema.vendor="Citus Data, Inc." \ + org.label-schema.version=${VERSION} \ + org.label-schema.schema-version="1.0" + +ENV CITUS_VERSION ${VERSION}.citus-1 + +# install Citus +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + curl \ + && curl -s https://install.citusdata.com/community/deb.sh | bash \ + && apt-get install -y postgresql-$PG_MAJOR-citus-14.1=$CITUS_VERSION \ + postgresql-$PG_MAJOR-hll=2.21.citus-1 \ + postgresql-$PG_MAJOR-topn=2.7.1.citus-1 \ + && apt-get purge -y --auto-remove curl \ + && rm -rf /var/lib/apt/lists/* + +# add citus to default PostgreSQL config +RUN echo "shared_preload_libraries='citus'" >> /usr/share/postgresql/postgresql.conf.sample + +# add scripts to run after initdb +COPY 001-create-citus-extension.sql /docker-entrypoint-initdb.d/ + +# add health check script +COPY pg_healthcheck wait-for-manager.sh / +RUN chmod +x /wait-for-manager.sh + +# entry point unsets PGPASSWORD, but we need it to connect to workers +# https://github.com/docker-library/postgres/blob/33bccfcaddd0679f55ee1028c012d26cd196537d/12/docker-entrypoint.sh#L303 +RUN sed "/unset PGPASSWORD/d" -i /usr/local/bin/docker-entrypoint.sh + +HEALTHCHECK --interval=4s --start-period=6s CMD ./pg_healthcheck \ No newline at end of file diff --git a/postgres-19/Dockerfile b/postgres-19/Dockerfile new file mode 100644 index 0000000..8b3a31c --- /dev/null +++ b/postgres-19/Dockerfile @@ -0,0 +1,42 @@ +# This file is auto generated from it's template, +# see citusdata/tools/packaging_automation/templates/docker/postgres-19/postgres-19.tmpl.dockerfile. +FROM postgres:19beta3 +ARG VERSION=14.1.0 +LABEL maintainer="Citus Data https://citusdata.com" \ + org.label-schema.name="Citus" \ + org.label-schema.description="Scalable PostgreSQL for multi-tenant and real-time workloads" \ + org.label-schema.url="https://www.citusdata.com" \ + org.label-schema.vcs-url="https://github.com/citusdata/citus" \ + org.label-schema.vendor="Citus Data, Inc." \ + org.label-schema.version=${VERSION} \ + org.label-schema.schema-version="1.0" + +ENV CITUS_VERSION ${VERSION}.citus-1 + +# install Citus +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + curl \ + && curl -s https://install.citusdata.com/community/deb.sh | bash \ + && apt-get install -y postgresql-$PG_MAJOR-citus-14.1=$CITUS_VERSION \ + postgresql-$PG_MAJOR-hll=2.21.citus-1 \ + postgresql-$PG_MAJOR-topn=2.7.1.citus-1 \ + && apt-get purge -y --auto-remove curl \ + && rm -rf /var/lib/apt/lists/* + +# add citus to default PostgreSQL config +RUN echo "shared_preload_libraries='citus'" >> /usr/share/postgresql/postgresql.conf.sample + +# add scripts to run after initdb +COPY 001-create-citus-extension.sql /docker-entrypoint-initdb.d/ + +# add health check script +COPY pg_healthcheck wait-for-manager.sh / +RUN chmod +x /wait-for-manager.sh + +# entry point unsets PGPASSWORD, but we need it to connect to workers +# https://github.com/docker-library/postgres/blob/33bccfcaddd0679f55ee1028c012d26cd196537d/12/docker-entrypoint.sh#L303 +RUN sed "/unset PGPASSWORD/d" -i /usr/local/bin/docker-entrypoint.sh + +HEALTHCHECK --interval=4s --start-period=6s CMD ./pg_healthcheck \ No newline at end of file