forked from repo-mirrors/cnpg-postgres-containers
chore: re-enable build of preview versions (#296)
Closes #294 Signed-off-by: Niccolò Fei <niccolo.fei@enterprisedb.com> Signed-off-by: Gabriele Bartolini <gabriele.bartolini@enterprisedb.com> Co-authored-by: Gabriele Bartolini <gabriele.bartolini@enterprisedb.com>
This commit is contained in:
31
BUILD.md
31
BUILD.md
@@ -129,6 +129,37 @@ based on their digest through a GitHub workflow, using the
|
||||
[`cosign-installer` action](https://github.com/marketplace/actions/cosign-installer), which leverages
|
||||
[short-lived tokens issued through OpenID Connect](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect).
|
||||
|
||||
## PostgreSQL Preview Versions
|
||||
|
||||
PostgreSQL delivers a new major release every year. Before the stable version
|
||||
is published, preview builds are made available in the form of beta releases
|
||||
(e.g. `beta1`) and one or more release candidates (e.g. `rc1`).
|
||||
|
||||
Once the first beta of a new major release is published as a Debian package,
|
||||
you can start building preview images by updating the
|
||||
`postgreSQLPreviewVersions` array in the `docker-bake.hcl` file. For example:
|
||||
|
||||
```yaml
|
||||
postgreSQLPreviewVersions = [
|
||||
"19~beta1",
|
||||
]
|
||||
```
|
||||
|
||||
**NOTE:** Always use the Debian package naming convention when specifying
|
||||
preview versions (e.g. `19~beta1`, `19~rc1`).
|
||||
|
||||
To confirm that version 19 is included in the build process, run:
|
||||
|
||||
```bash
|
||||
docker buildx bake --print
|
||||
```
|
||||
|
||||
**IMPORTANT:** Versions listed in `postgreSQLPreviewVersions` are automatically
|
||||
excluded if the same version is already available as a stable release in the
|
||||
`postgreSQLVersions` array. Although this safeguard prevents duplication, the
|
||||
`postgreSQLPreviewVersions` array should be cleared once a preview version is
|
||||
promoted to stable (e.g. when `19~rc1` becomes `19.0`).
|
||||
|
||||
## Trademarks
|
||||
|
||||
*[Postgres, PostgreSQL and the Slonik Logo](https://www.postgresql.org/about/policies/trademarks/)
|
||||
|
22
README.md
22
README.md
@@ -12,13 +12,23 @@
|
||||
|
||||
# CNPG PostgreSQL Container Images
|
||||
|
||||
This repository provides maintenance scripts for generating **immutable
|
||||
application containers** for all supported PostgreSQL versions (13 to 17),
|
||||
as well as for PostgreSQL 18 beta.
|
||||
This repository provides maintenance scripts for generating
|
||||
**immutable application containers** for all supported
|
||||
[PostgreSQL major versions](https://www.postgresql.org/support/versioning/):
|
||||
|
||||
These containers are designed to serve as **operands** for the
|
||||
[CloudNativePG (CNPG) operator](https://cloudnative-pg.io)
|
||||
within Kubernetes environments.
|
||||
| Version | Release Date | EOL |
|
||||
|:-------:|:------------:|:----------:|
|
||||
| 17 | 2024-09-26 | 2029-11-08 |
|
||||
| 16 | 2023-09-14 | 2028-11-09 |
|
||||
| 15 | 2022-10-13 | 2027-11-11 |
|
||||
| 14 | 2021-09-30 | 2026-11-12 |
|
||||
| 13 | 2020-09-24 | 2025-11-13 |
|
||||
|
||||
In addition, PostgreSQL 18 RC1 is provided for testing purposes only.
|
||||
|
||||
These images are designed to serve as operands of the
|
||||
[CloudNativePG (CNPG) operator](https://cloudnative-pg.io) in Kubernetes
|
||||
environments, and are not intended for standalone use.
|
||||
|
||||
## Key Features
|
||||
|
||||
|
@@ -29,6 +29,13 @@ postgreSQLVersions = [
|
||||
"17.6"
|
||||
]
|
||||
|
||||
// PostgreSQL preview versions to build, such as "18~beta1" or "18~rc1"
|
||||
// Preview versions are automatically filtered out if present in the stable list
|
||||
// MANUALLY EDIT THE CONTENT - AND UPDATE THE README.md FILE TOO
|
||||
postgreSQLPreviewVersions = [
|
||||
"18~rc1",
|
||||
]
|
||||
|
||||
// Barman version to build
|
||||
# renovate: datasource=github-releases depName=EnterpriseDB/barman versioning=loose
|
||||
barmanVersion = "3.14.0"
|
||||
@@ -46,7 +53,8 @@ target "default" {
|
||||
"standard",
|
||||
"system"
|
||||
]
|
||||
pgVersion = postgreSQLVersions
|
||||
// Get the list of PostgreSQL versions, filtering preview versions if already stable
|
||||
pgVersion = getPgVersions(postgreSQLVersions, postgreSQLPreviewVersions)
|
||||
base = [
|
||||
// renovate: datasource=docker versioning=loose
|
||||
"debian:trixie-slim@sha256:c85a2732e97694ea77237c61304b3bb410e0e961dd6ee945997a06c788c545bb",
|
||||
@@ -132,17 +140,33 @@ function cleanVersion {
|
||||
result = replace(version, "~", "")
|
||||
}
|
||||
|
||||
function isBeta {
|
||||
function isPreview {
|
||||
params = [ version ]
|
||||
result = length(regexall("[0-9]+~beta.*", version)) > 0
|
||||
result = length(regexall("[0-9]+~(alpha|beta|rc).*", version)) > 0
|
||||
}
|
||||
|
||||
function getMajor {
|
||||
params = [ version ]
|
||||
result = (isBeta(version) == true) ? index(split("~", version),0) : index(split(".", version),0)
|
||||
result = (isPreview(version) == true) ? index(split("~", version),0) : index(split(".", version),0)
|
||||
}
|
||||
|
||||
function getExtensionsString {
|
||||
params = [ version, extensions ]
|
||||
result = (isBeta(version) == true) ? "" : join(" ", formatlist("postgresql-%s-%s", getMajor(version), extensions))
|
||||
result = (isPreview(version) == true) ? "" : join(" ", formatlist("postgresql-%s-%s", getMajor(version), extensions))
|
||||
}
|
||||
|
||||
function isMajorPresent {
|
||||
params = [major, pgVersions]
|
||||
result = contains([for v in pgVersions : getMajor(v)], major)
|
||||
}
|
||||
|
||||
function getPgVersions {
|
||||
params = [stableVersions, previewVersions]
|
||||
// Remove any preview version if already present as stable
|
||||
result = concat(stableVersions,
|
||||
[
|
||||
for v in previewVersions : v
|
||||
if !isMajorPresent(getMajor(v), stableVersions)
|
||||
]
|
||||
)
|
||||
}
|
||||
|
Reference in New Issue
Block a user