From 22f26d340cf1557b21c2d994d48d47ab6b22f644 Mon Sep 17 00:00:00 2001 From: Pascal Zimmermann Date: Tue, 31 Mar 2026 22:24:38 +0200 Subject: [PATCH 1/3] feat: Add PostgreSQL 18 as default version --- README.md | 2 +- ci/pipeline.yml | 22 +++++++++ jobs/bbr-postgres-db/spec | 4 +- jobs/postgres/spec | 5 +- .../templates/used_postgresql_versions.yml | 4 ++ packages/postgres-18/packaging | 49 +++++++++++++++++++ packages/postgres-18/spec | 5 ++ 7 files changed, 86 insertions(+), 5 deletions(-) create mode 100755 packages/postgres-18/packaging create mode 100644 packages/postgres-18/spec diff --git a/README.md b/README.md index dac8e59a..05366a07 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ The complete list of available properties can be found in the [spec](jobs/postgr Property | Description -------- | ------------- -databases.version | Define the used PostgreSQL major version. Default: 16 +databases.version | Define the used PostgreSQL major version. Default: 18. Supported versions: 13, 15, 16, 17, 18 databases.port | The database port. Default: 5432 databases.databases | A list of databases and associated properties to create when Postgres starts databases.databases[n].name | Database name diff --git a/ci/pipeline.yml b/ci/pipeline.yml index 93f98a05..12fbb3d0 100644 --- a/ci/pipeline.yml +++ b/ci/pipeline.yml @@ -38,6 +38,8 @@ jobs: trigger: true - get: postgres-17-src trigger: true + - get: postgres-18-src + trigger: true - get: yq-release trigger: true params: @@ -91,6 +93,18 @@ jobs: options: access_key_id: ((postgres-release-blobstore-user.username)) secret_access_key: ((postgres-release-blobstore-user.password)) + - task: bump-postgres-18-package + file: postgres-release/ci/tasks/bump-postgres-packages/task.yml + image: bosh-cli-registry-image + input_mapping: + postgres-src: postgres-18-src + params: + MAJOR_VERSION: 18 + PRIVATE_YML: | + blobstore: + options: + access_key_id: ((postgres-release-blobstore-user.username)) + secret_access_key: ((postgres-release-blobstore-user.password)) - task: bump-yq-package file: postgres-release/ci/tasks/bump-yq-packages/task.yml image: bosh-integration-image @@ -155,6 +169,7 @@ jobs: - postgresql-15 - postgresql-16 - postgresql-17 + - postgresql-18 - yq on_success: do: @@ -313,6 +328,13 @@ resources: regex: 'href="v(?P17\.[0-9.]+)/"' uri: "https://ftp.postgresql.org/pub/source/v{version}/postgresql-{version}.tar.gz" + - name: postgres-18-src + type: http-resource + source: + index: "https://ftp.postgresql.org/pub/source/" + regex: 'href="v(?P18\.[0-9.]+)/"' + uri: "https://ftp.postgresql.org/pub/source/v{version}/postgresql-{version}.tar.gz" + - name: yq-release type: github-release source: diff --git a/jobs/bbr-postgres-db/spec b/jobs/bbr-postgres-db/spec index 63e18728..47b2c05b 100644 --- a/jobs/bbr-postgres-db/spec +++ b/jobs/bbr-postgres-db/spec @@ -50,5 +50,5 @@ properties: default: false description: "uses singele transaction when restoring databases" postgres.version: - description: "The database version e.g. 11, 13, 15, 16 or 17" - default: 16 + description: "The database version e.g. 11, 13, 15, 16, 17 or 18" + default: 18 diff --git a/jobs/postgres/spec b/jobs/postgres/spec index baf6a14d..914fa6a3 100644 --- a/jobs/postgres/spec +++ b/jobs/postgres/spec @@ -32,6 +32,7 @@ packages: - postgres-15 - postgres-16 - postgres-17 + - postgres-18 - postgres-yq-4 provides: @@ -45,8 +46,8 @@ provides: properties: databases.version: - description: "The database version e.g. 11, 13, 15, 16 or 17" - default: 16 + description: "The database version e.g. 13, 15, 16, 17 or 18" + default: 18 databases.port: description: "The database port" default: 5432 diff --git a/jobs/postgres/templates/used_postgresql_versions.yml b/jobs/postgres/templates/used_postgresql_versions.yml index 6c4de9e1..53f37489 100644 --- a/jobs/postgres/templates/used_postgresql_versions.yml +++ b/jobs/postgres/templates/used_postgresql_versions.yml @@ -1,6 +1,10 @@ postgresql: default: 16 major_version: + 18: + minor_version: "18.2" + 17: + minor_version: "17.4" 16: minor_version: "16.13" 15: diff --git a/packages/postgres-18/packaging b/packages/postgres-18/packaging new file mode 100755 index 00000000..dc6af30e --- /dev/null +++ b/packages/postgres-18/packaging @@ -0,0 +1,49 @@ +#!/bin/bash -exu + +function main() { + extract_archive + compile + +} + +function extract_archive() { + + echo "Extracting archive..." + tar xzf postgres/postgresql-* + +} + +function compile() { + + pushd postgresql-* > /dev/null + if [[ "$(uname -a)" =~ "x86_64" || "$(uname -a)" =~ "ppc64le" ]] ; then + ICU_CFLAGS=" " ICU_LIBS="-L/usr/lib/x86_64-linux-gnu -licui18n -licuuc -licudata" ./configure --prefix="${BOSH_INSTALL_TARGET}" --with-openssl + else + ICU_CFLAGS=" " ICU_LIBS="-L/usr/lib/x86_64-linux-gnu -licui18n -licuuc -licudata" CFLAGS=-m32 LDFLAGS=-m32 CXXFLAGS=-m32 ./configure --prefix="${BOSH_INSTALL_TARGET}" --with-openssl + fi + + pushd src/bin/pg_config > /dev/null + make -j$(nproc) + make install + popd > /dev/null + + cp -LR src/include "${BOSH_INSTALL_TARGET}" + pushd src/interfaces/libpq > /dev/null + make -j$(nproc) + make install + popd > /dev/null + + pushd src > /dev/null + make -j$(nproc) + make install + popd > /dev/null + + pushd contrib > /dev/null + make -j$(nproc) + make install + popd > /dev/null + popd > /dev/null +} + +main + diff --git a/packages/postgres-18/spec b/packages/postgres-18/spec new file mode 100644 index 00000000..f8a10685 --- /dev/null +++ b/packages/postgres-18/spec @@ -0,0 +1,5 @@ +--- +name: postgres-18 +files: + - postgres/postgresql-18.*.tar.gz + From fb2ae9194316db1bc8e5b21e8aedef1f03d44e82 Mon Sep 17 00:00:00 2001 From: Pascal Zimmermann Date: Tue, 31 Mar 2026 23:24:59 +0200 Subject: [PATCH 2/3] feat: Update the default version and add BBS support --- jobs/bbr-postgres-db/spec | 1 + jobs/postgres/templates/used_postgresql_versions.yml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/jobs/bbr-postgres-db/spec b/jobs/bbr-postgres-db/spec index 47b2c05b..6ab3b968 100644 --- a/jobs/bbr-postgres-db/spec +++ b/jobs/bbr-postgres-db/spec @@ -18,6 +18,7 @@ packages: - postgres-15 - postgres-16 - postgres-17 + - postgres-18 consumes: - name: database diff --git a/jobs/postgres/templates/used_postgresql_versions.yml b/jobs/postgres/templates/used_postgresql_versions.yml index 53f37489..9089d29c 100644 --- a/jobs/postgres/templates/used_postgresql_versions.yml +++ b/jobs/postgres/templates/used_postgresql_versions.yml @@ -1,5 +1,5 @@ postgresql: - default: 16 + default: 18 major_version: 18: minor_version: "18.2" From 8ef117e7ca30452533c175811e0ff63b6d275a39 Mon Sep 17 00:00:00 2001 From: Pascal Zimmermann Date: Tue, 31 Mar 2026 23:33:49 +0200 Subject: [PATCH 3/3] Fix indentation and restore PostgreSQL 18 version --- jobs/postgres/templates/used_postgresql_versions.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/jobs/postgres/templates/used_postgresql_versions.yml b/jobs/postgres/templates/used_postgresql_versions.yml index 9089d29c..3d50a5d2 100644 --- a/jobs/postgres/templates/used_postgresql_versions.yml +++ b/jobs/postgres/templates/used_postgresql_versions.yml @@ -1,10 +1,6 @@ postgresql: default: 18 major_version: - 18: - minor_version: "18.2" - 17: - minor_version: "17.4" 16: minor_version: "16.13" 15: @@ -15,3 +11,5 @@ postgresql: minor_version: "11.22" 17: minor_version: "17.9" + 18: + minor_version: "18.2"