From 3d3c11f45938f34175f1eb1d381cef08e4193716 Mon Sep 17 00:00:00 2001 From: Pascal Zimmermann Date: Tue, 31 Mar 2026 22:24:38 +0200 Subject: [PATCH 1/2] feat: Add PostgreSQL 18 as default version # Conflicts: # ci/pipeline.yml # jobs/bbr-postgres-db/spec # jobs/postgres/spec --- README.md | 2 +- ci/pipeline.yml | 31 ++++++++++++ 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, 95 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 7c4eea81..6c80b375 100644 --- a/ci/pipeline.yml +++ b/ci/pipeline.yml @@ -43,6 +43,8 @@ jobs: trigger: true - get: postgres-17-src trigger: true + - get: postgres-18-src + trigger: true - get: yq-release trigger: true params: @@ -95,6 +97,27 @@ 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 + params: + PRIVATE_YML: | + blobstore: + options: + access_key_id: ((postgres-release-blobstore-user.username)) + secret_access_key: ((postgres-release-blobstore-user.password)) - put: postgres-release params: repository: postgres-release @@ -148,6 +171,7 @@ jobs: - postgresql-15 - postgresql-16 - postgresql-17 + - postgresql-18 - yq on_success: do: @@ -299,6 +323,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 0699f005..24a72ea3 100644 --- a/jobs/bbr-postgres-db/spec +++ b/jobs/bbr-postgres-db/spec @@ -49,5 +49,5 @@ properties: default: false description: "uses singele transaction when restoring databases" postgres.version: - description: "The database version e.g. 15, 16 or 17" - default: 16 + description: "The database version e.g. 15, 16, 17 or 18" + default: 18 diff --git a/jobs/postgres/spec b/jobs/postgres/spec index 8440d47b..638b8545 100644 --- a/jobs/postgres/spec +++ b/jobs/postgres/spec @@ -31,6 +31,7 @@ packages: - postgres-15 - postgres-16 - postgres-17 + - postgres-18 - postgres-yq-4 provides: @@ -44,8 +45,8 @@ provides: properties: databases.version: - description: "The database version e.g. 15, 16 or 17" - default: 16 + description: "The database version e.g. 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 9c9d1865..e8e61d18 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.14" 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 9899e6b6fa7984361fb68d756002164473c04b28 Mon Sep 17 00:00:00 2001 From: Pascal Zimmermann Date: Tue, 31 Mar 2026 23:24:59 +0200 Subject: [PATCH 2/2] # This is a combination of 2 commits. # This is the 1st commit message: feat: Rebase the PR and update docs # This is the commit message #2: Bump packages Bump packages Bump packages # Conflicts: # jobs/postgres/templates/used_postgresql_versions.yml --- README.md | 2 +- ci/pipeline.yml | 11 +---------- jobs/bbr-postgres-db/spec | 3 ++- jobs/postgres/templates/used_postgresql_versions.yml | 12 +++++------- 4 files changed, 9 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 05366a07..2b4a17a4 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: 18. Supported versions: 13, 15, 16, 17, 18 +databases.version | Define the used PostgreSQL major version. Default: 18. Supported versions: 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 6c80b375..7941de99 100644 --- a/ci/pipeline.yml +++ b/ci/pipeline.yml @@ -99,7 +99,7 @@ jobs: 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 + image: bosh-integration-image input_mapping: postgres-src: postgres-18-src params: @@ -109,15 +109,6 @@ jobs: 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 - params: - PRIVATE_YML: | - blobstore: - options: - access_key_id: ((postgres-release-blobstore-user.username)) - secret_access_key: ((postgres-release-blobstore-user.password)) - put: postgres-release params: repository: postgres-release diff --git a/jobs/bbr-postgres-db/spec b/jobs/bbr-postgres-db/spec index 24a72ea3..0399c7f3 100644 --- a/jobs/bbr-postgres-db/spec +++ b/jobs/bbr-postgres-db/spec @@ -17,6 +17,7 @@ packages: - postgres-15 - postgres-16 - postgres-17 + - postgres-18 consumes: - name: database @@ -47,7 +48,7 @@ properties: description: "Secret key used for the client certificate. Specify it if you want to authenticate using certificates." postgres.single-transaction: default: false - description: "uses singele transaction when restoring databases" + description: "uses single transaction when restoring databases" postgres.version: description: "The database version e.g. 15, 16, 17 or 18" default: 18 diff --git a/jobs/postgres/templates/used_postgresql_versions.yml b/jobs/postgres/templates/used_postgresql_versions.yml index e8e61d18..fdd6360c 100644 --- a/jobs/postgres/templates/used_postgresql_versions.yml +++ b/jobs/postgres/templates/used_postgresql_versions.yml @@ -1,13 +1,11 @@ postgresql: - default: 16 + default: 18 major_version: - 18: - minor_version: "18.2" - 17: - minor_version: "17.4" - 16: - minor_version: "16.14" 15: minor_version: "15.18" + 16: + minor_version: "16.14" 17: minor_version: "17.10" + 18: + minor_version: "18.2" \ No newline at end of file