From 89c9b5485a07a411fb35de4f8cf0467e7eb01f85 Mon Sep 17 00:00:00 2001 From: Manuel <5673677+mtrezza@users.noreply.github.com> Date: Sun, 12 Jan 2025 15:03:37 +0100 Subject: [PATCH] feat: Increase required minimum versions to Postgres `15`, PostGIS `3.3` (#9538) BREAKING CHANGE: This releases increases the required minimum versions to Postgres `15`, PostGIS `3.3` and removes support for Postgres `13`, `14`, PostGIS `3.1`, `3.2`. --- .github/workflows/ci.yml | 20 ++++---------------- README.md | 38 +++++++++++++++++++------------------- 2 files changed, 23 insertions(+), 35 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index de9f8aecd4..a78fcea797 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -213,23 +213,11 @@ jobs: strategy: matrix: include: - - name: PostgreSQL 13, PostGIS 3.1 - POSTGRES_IMAGE: postgis/postgis:13-3.1 + - name: PostgreSQL 15, PostGIS 3.3 + POSTGRES_IMAGE: postgis/postgis:15-3.3 NODE_VERSION: 22.12.0 - - name: PostgreSQL 13, PostGIS 3.2 - POSTGRES_IMAGE: postgis/postgis:13-3.2 - NODE_VERSION: 22.12.0 - - name: PostgreSQL 13, PostGIS 3.3 - POSTGRES_IMAGE: postgis/postgis:13-3.3 - NODE_VERSION: 22.12.0 - - name: PostgreSQL 13, PostGIS 3.4 - POSTGRES_IMAGE: postgis/postgis:13-3.4 - NODE_VERSION: 22.12.0 - - name: PostgreSQL 13, PostGIS 3.5 - POSTGRES_IMAGE: postgis/postgis:13-3.5 - NODE_VERSION: 22.12.0 - - name: PostgreSQL 14, PostGIS 3.5 - POSTGRES_IMAGE: postgis/postgis:14-3.5 + - name: PostgreSQL 15, PostGIS 3.4 + POSTGRES_IMAGE: postgis/postgis:15-3.4 NODE_VERSION: 22.12.0 - name: PostgreSQL 15, PostGIS 3.5 POSTGRES_IMAGE: postgis/postgis:15-3.5 diff --git a/README.md b/README.md index 2d52c01ab3..c715e97ded 100644 --- a/README.md +++ b/README.md @@ -127,33 +127,33 @@ Before you start make sure you have installed: Parse Server is continuously tested with the most recent releases of Node.js to ensure compatibility. We follow the [Node.js Long Term Support plan](https://github.com/nodejs/Release) and only test against versions that are officially supported and have not reached their end-of-life date. -| Version | Minimum Version | End-of-Life | Compatible | -|------------|-----------------|-------------|------------| -| Node.js 18 | 18.20.4 | April 2025 | ✅ Yes | -| Node.js 20 | 20.18.0 | April 2026 | ✅ Yes | -| Node.js 22 | 22.12.0 | April 2027 | ✅ Yes | +| Version | Minimum Version | End-of-Life | Parse Server Support | +|------------|-----------------|-------------|----------------------| +| Node.js 18 | 18.20.4 | April 2025 | <= 8.x (2025) | +| Node.js 20 | 20.18.0 | April 2026 | <= 9.x (2026) | +| Node.js 22 | 22.12.0 | April 2027 | <= 10.x (2027) | #### MongoDB Parse Server is continuously tested with the most recent releases of MongoDB to ensure compatibility. We follow the [MongoDB support schedule](https://www.mongodb.com/support-policy) and [MongoDB lifecycle schedule](https://www.mongodb.com/support-policy/lifecycles) and only test against versions that are officially supported and have not reached their end-of-life date. MongoDB "rapid releases" are ignored as these are considered pre-releases of the next major version. -| Version | Minimum Version | End-of-Life | Compatible | -|-----------|-----------------|-------------|------------| -| MongoDB 6 | 6.0.19 | July 2025 | ✅ Yes | -| MongoDB 7 | 7.0.16 | August 2026 | ✅ Yes | -| MongoDB 8 | 8.0.4 | TDB | ✅ Yes | +| Version | Minimum Version | End-of-Life | Parse Server Support | +|-----------|-----------------|-------------|----------------------| +| MongoDB 6 | 6.0.19 | July 2025 | <= 8.x (2025) | +| MongoDB 7 | 7.0.16 | August 2026 | <= 9.x (2026) | +| MongoDB 8 | 8.0.4 | TDB | <= 10.x (2027) | #### PostgreSQL Parse Server is continuously tested with the most recent releases of PostgreSQL and PostGIS to ensure compatibility, using [PostGIS docker images](https://registry.hub.docker.com/r/postgis/postgis/tags?page=1&ordering=last_updated). We follow the [PostgreSQL support schedule](https://www.postgresql.org/support/versioning) and [PostGIS support schedule](https://www.postgis.net/eol_policy/) and only test against versions that are officially supported and have not reached their end-of-life date. Due to the extensive PostgreSQL support duration of 5 years, Parse Server drops support about 2 years before the official end-of-life date. -| Version | PostGIS Version | End-of-Life | Parse Server Support | Compatible | -|-------------|-------------------------|---------------|----------------------|------------| -| Postgres 13 | 3.1, 3.2, 3.3, 3.4, 3.5 | November 2025 | <= 6.x (2023) | ✅ Yes | -| Postgres 14 | 3.5 | November 2026 | <= 7.x (2024) | ✅ Yes | -| Postgres 15 | 3.5 | November 2027 | <= 8.x (2025) | ✅ Yes | -| Postgres 16 | 3.5 | November 2028 | <= 9.x (2026) | ✅ Yes | -| Postgres 17 | 3.5 | November 2029 | <= 9.x (2026) | ✅ Yes | +| Version | PostGIS Version | End-of-Life | Parse Server Support | +|-------------|-------------------------|---------------|----------------------| +| Postgres 13 | 3.1, 3.2, 3.3, 3.4, 3.5 | November 2025 | <= 6.x (2023) | +| Postgres 14 | 3.5 | November 2026 | <= 7.x (2024) | +| Postgres 15 | 3.3, 3.4, 3.5 | November 2027 | <= 8.x (2025) | +| Postgres 16 | 3.5 | November 2028 | <= 9.x (2026) | +| Postgres 17 | 3.5 | November 2029 | <= 10.x (2027) | ### Locally @@ -483,7 +483,7 @@ The following paths are already used by Parse Server's built-in features and are | Parameter | Optional | Type | Default value | Example values | Environment variable | Description | |------------------------------|----------|-----------------|---------------|-----------------------|------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `pages` | yes | `Object` | `undefined` | - | `PARSE_SERVER_PAGES` | The options for pages such as password reset and email verification. | -| `pages.enableRouter` | yes | `Boolean` | `false` | - | `PARSE_SERVER_PAGES_ENABLE_ROUTER` | Is `true` if the pages router should be enabled; this is required for any of the pages options to take effect. | +| `pages.enableRouter` | yes | `Boolean` | `false` | - | `PARSE_SERVER_PAGES_ENABLE_ROUTER` | Is `true` if the pages router should be enabled; this is required for any of the pages options to take effect. | | `pages.customRoutes` | yes | `Array` | `[]` | - | `PARSE_SERVER_PAGES_CUSTOM_ROUTES` | The custom routes. The routes are added in the order they are defined here, which has to be considered since requests traverse routes in an ordered manner. Custom routes are traversed after build-in routes such as password reset and email verification. | | `pages.customRoutes.method` | | `String` | - | `GET`, `POST` | - | The HTTP method of the custom route. | | `pages.customRoutes.path` | | `String` | - | `custom_page` | - | The path of the custom route. Note that the same path can used if the `method` is different, for example a path `custom_page` can have two routes, a `GET` and `POST` route, which will be invoked depending on the HTTP request method. | @@ -777,7 +777,7 @@ The following parameter and placeholder keys are reserved because they are used | Parameter | Optional | Type | Default value | Example values | Environment variable | Description | |-------------------------------------------------|----------|---------------------------------------|----------------------------------------|------------------------------------------------------|-----------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `pages` | yes | `Object` | `undefined` | - | `PARSE_SERVER_PAGES` | The options for pages such as password reset and email verification. | -| `pages.enableRouter` | yes | `Boolean` | `false` | - | `PARSE_SERVER_PAGES_ENABLE_ROUTER` | Is `true` if the pages router should be enabled; this is required for any of the pages options to take effect. | +| `pages.enableRouter` | yes | `Boolean` | `false` | - | `PARSE_SERVER_PAGES_ENABLE_ROUTER` | Is `true` if the pages router should be enabled; this is required for any of the pages options to take effect. | | `pages.enableLocalization` | yes | `Boolean` | `false` | - | `PARSE_SERVER_PAGES_ENABLE_LOCALIZATION` | Is true if pages should be localized; this has no effect on custom page redirects. | | `pages.localizationJsonPath` | yes | `String` | `undefined` | `./private/translations.json` | `PARSE_SERVER_PAGES_LOCALIZATION_JSON_PATH` | The path to the JSON file for localization; the translations will be used to fill template placeholders according to the locale. | | `pages.localizationFallbackLocale` | yes | `String` | `en` | `en`, `en-GB`, `default` | `PARSE_SERVER_PAGES_LOCALIZATION_FALLBACK_LOCALE` | The fallback locale for localization if no matching translation is provided for the given locale. This is only relevant when providing translation resources via JSON file. |