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
|
[`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).
|
[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
|
## Trademarks
|
||||||
|
|
||||||
*[Postgres, PostgreSQL and the Slonik Logo](https://www.postgresql.org/about/policies/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
|
# CNPG PostgreSQL Container Images
|
||||||
|
|
||||||
This repository provides maintenance scripts for generating **immutable
|
This repository provides maintenance scripts for generating
|
||||||
application containers** for all supported PostgreSQL versions (13 to 17),
|
**immutable application containers** for all supported
|
||||||
as well as for PostgreSQL 18 beta.
|
[PostgreSQL major versions](https://www.postgresql.org/support/versioning/):
|
||||||
|
|
||||||
These containers are designed to serve as **operands** for the
|
| Version | Release Date | EOL |
|
||||||
[CloudNativePG (CNPG) operator](https://cloudnative-pg.io)
|
|:-------:|:------------:|:----------:|
|
||||||
within Kubernetes environments.
|
| 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
|
## Key Features
|
||||||
|
|
||||||
|
@@ -29,6 +29,13 @@ postgreSQLVersions = [
|
|||||||
"17.6"
|
"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
|
// Barman version to build
|
||||||
# renovate: datasource=github-releases depName=EnterpriseDB/barman versioning=loose
|
# renovate: datasource=github-releases depName=EnterpriseDB/barman versioning=loose
|
||||||
barmanVersion = "3.14.0"
|
barmanVersion = "3.14.0"
|
||||||
@@ -46,7 +53,8 @@ target "default" {
|
|||||||
"standard",
|
"standard",
|
||||||
"system"
|
"system"
|
||||||
]
|
]
|
||||||
pgVersion = postgreSQLVersions
|
// Get the list of PostgreSQL versions, filtering preview versions if already stable
|
||||||
|
pgVersion = getPgVersions(postgreSQLVersions, postgreSQLPreviewVersions)
|
||||||
base = [
|
base = [
|
||||||
// renovate: datasource=docker versioning=loose
|
// renovate: datasource=docker versioning=loose
|
||||||
"debian:trixie-slim@sha256:c85a2732e97694ea77237c61304b3bb410e0e961dd6ee945997a06c788c545bb",
|
"debian:trixie-slim@sha256:c85a2732e97694ea77237c61304b3bb410e0e961dd6ee945997a06c788c545bb",
|
||||||
@@ -132,17 +140,33 @@ function cleanVersion {
|
|||||||
result = replace(version, "~", "")
|
result = replace(version, "~", "")
|
||||||
}
|
}
|
||||||
|
|
||||||
function isBeta {
|
function isPreview {
|
||||||
params = [ version ]
|
params = [ version ]
|
||||||
result = length(regexall("[0-9]+~beta.*", version)) > 0
|
result = length(regexall("[0-9]+~(alpha|beta|rc).*", version)) > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function getMajor {
|
function getMajor {
|
||||||
params = [ version ]
|
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 {
|
function getExtensionsString {
|
||||||
params = [ version, extensions ]
|
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